核心思想:相邻两个进行比较,每一轮找出最大的一个放在最后面。
public class MaoPao{
public static void main(String []args){
int[] a={8,3,6,2,1,5,4};
//未排序前,遍历数组
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
//冒泡排序法
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
//比较a[j]和a[j+1]
if(a[j]>a[j+1]){
int k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
//经过冒泡排序后,打印出来
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
}
}
未排序前数组: 0 1 2 3 4 5 6
8 3 6 2 1 5 4
(j)
第一轮(i=0) 0~1 3 8 6 2 1 5 4
1~2 3 6 8 2 1 5 4
2~3 3 6 2 8 1 5 4
3~4 3 6 2 1 8 5 4
4~5 3 6 2 1 5 8 4
5~6 3 6 2 1 5 4 8
第二轮(i=1) 0~1 3 6 2 1 5 4 8
1~2 3 2 6 1 5 4 8
2~3 3 2 1 6 5 4 8
3~4 3 2 1 5 6 4 8
4~5 3 2 1 5 4 6 8
第三轮 (i=2)0~1 2 3 1 5 4 6 8
1~2 2 1 3 5 4 6 8
2~3 2 1 3 5 4 6 8
3~4 2 1 3 4 5 6 8
第四轮 (i=3) 0~1 1 2 3 4 5 6 8
1~2 1 2 3 4 5 6 8
2~3 1 2 3 4 5 6 8
第五轮 (i=4) 0~1 1 2 3 4 5 6 8
1~2 1 2 3 4 5 6 8
第六轮 (i=5) 0~1 1 2 3 4 5 6 8
通过上面的例子可以看出,外层循环变量i=5,可以表示为i<数组的长度-1,内层循环变量j跟i有关,可以表示为j<数组的长度-1-i。
运行结果如图: