您的位置:首页 > 编程语言 > Java开发

可能是屎上最容易懂的java冒泡排序

2016-06-03 23:25 330 查看

    冒泡排序是一门艺术,一般人刚刚接触到他的时候,根本无从下手。不少人(包括我)大学毕业了找工作,面试官问:你解释一下冒泡算法,直接就歇菜了。

    首先我们从字面上来看,冒泡,像泡泡一样冒出来,还是不懂啊。不看代码,我还真讲不通,我先把代码搞上来,咱们对着代码讲。

public static void main(String[] args) {
int[] array={4,3,2,1};
int count=0;
for(int i=0;i<array.length;i++){  //外循环
for(int j=i+1;j<array.length;j++){  //内循环
count++;
if(array[i]>array[j]){
int first=i;
//下面三行代码:first位置的数和j位置的数换个位置
int temp=array[first];
array[first]=array[j];
array[j]=temp;
printArray(i,j,array); //打印数组
}
}
}
System.out.println("一共执行了:"+count+"次!!");
}

private static void printArray(int i,int j,int[] array){
System.out.print("i="+i+",j="+j+",array=");
for(int k:array){
System.out.print(k+" ");
}
System.out.println();
}

 

 

执行的结果:

i=0,j=1,array=3 4 2 1
i=0,j=2,array=2 4 3 1
i=0,j=3,array=1 4 3 2
i=1,j=2,array=1 3 4 2
i=1,j=3,array=1 2 4 3
i=2,j=3,array=1 2 3 4
一共执行了:6次!!

 

我草,这不一目了然了?我们看运行的结果:

1、看前面三行,i的值是0,j的值从1涨到3,我们成功得将数组变成了:1 4 3 2,也就是说,里边的for循环走一遍,就把最小的数给搞到前面啦!

2、再看第4、5行,i的值是1,j从2到3,我们的数组变成了:1 2 4 3,意思是:我们把第二小的数放到了第二位!

3、当执行到最后一次的时候,我们把第三小的数放到了第三位。

 

总结一下:冒泡算法就是2个for循环,对于外循环,第几次外循环就能把数组第几小的数放到第几位,所以一共要进行n-1次的外循环才能将数组排序。 对于内循环,每次都把当前的第一个数(array[i]) 和后面的每一个数(array[j]) 比较,谁小谁就放在第一个!

 

于是,我们得到的结论是:冒泡算法是这样的:包括2个循环,内循环将最小值放前面(内有交互值方法),外循环就是(for i=0;i<length;i++)

 

你们还有更好的解释吗?求留言赐教,谢谢大家····

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: