排序算法-神奇的冒泡排序
程序员文章站
2022-04-15 17:45:11
冒泡排序我在以前学的时候呀,总有一个疑问,什么是冒泡排序呢? 为什么叫冒泡排序呢?其实就好比是水里的气泡,越往上,气泡越大,这就知道了,最后的那个数是最大的。...
冒泡排序
我在以前学的时候呀,总有一个疑问,什么是冒泡排序呢? 为什么叫冒泡排序呢?
其实就好比是水里的气泡,越往上,气泡越大,这就知道了,最后的那个数是最大的。
思路
当你的思路清晰了,代码就不是问题。首先考虑轮数,就比如说有4个数1,21,42,5
这4个数,冒泡排序就是第一个数和第二个数比,如果比第二个大,那么就交换位置,然后第二个依次和后面的比,第一轮比完,顺序就是 1,21,5,42
冒泡排序其实就是两层for循环嵌套,最外层是轮数,一共要比几轮呢,如果有i个数,就是比(i-1)轮 范围也就是1 到 i-1 ,这里的i用数组表示的话, 就是arr.length
那么是<arr.length-1还是<=arr.length-1呢,从第1轮开始,4个数,就是执行 1 2 3 一共3轮,也就是<=arr.length-1
第二层循环呢,就是比的是左边的数的位置范围,就拿第一轮来说,1,21,42,5 左边的数从下标0开始,到42也就是arr.length-2的位置为止;第二轮,还是从下标0开始,然后到arr.length-3 规律就是arr.length-1-i
里面就是比较如果左边的数大于右边的数,它们就交换
冒泡排序的实现:
public class Hello {
//冒泡排序:
public static void main(String[] args) {
int []arr ={100,0,8,6,1,3,5,9,-3};
for (int i = 1; i <=arr.length-1 ; i++) {
for (int j = 0; j <= arr.length-1-i; j++) {
if(arr[j]<arr[j+1]){
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for (int a:arr) {
System.out.print(a+" ");
}
}
}
控制台结果:
本文地址:https://blog.csdn.net/ITwuwei/article/details/110879976