package demo;
public class TestArraySort{
public static void main(String[] args){
int[] a = {8,5,4,3,7,2};
//冒泡排序法 相邻的元素比较每次找处最大的数.
/*
0 1 2 3 4 5 n=6 长度a.length
n = a.length =6
8 5 4 3 7 2 循环 i = 0 ; i < a.length-1 ; i++ 次
循环==(n-1)==5次;
循环第1次
0-1 5 8 4 3 7 2
1-2 5 4 8 3 7 2 比较5次
2-3 5 4 3 8 7 2 i=0
3-4 5 4 3 7 8 2 j=0;j<5;j++
4-5 5 4 3 7 2 8
循环第2次
0-1 4 5 3 7 2 8
1-2 4 3 5 7 2 8 i=1
2-3 4 3 5 7 2 8 j=0;j<4;j++
3-4 4 3 5 2 7 8 比较4次
循环第3次
0-1 3 4 5 2 7 8 i=2
1-2 3 4 5 2 7 8 j=0;j<3;j++
2-3 3 4 2 5 7 8 比较3次
循环第4次
0-1 3 4 2 5 7 8 i=3
1-2 3 2 4 5 7 8 j=0;j<2;j++
比较2次
循环第5次
0-1 2 3 4 5 7 8 i=4 j=0;j<1;j++
比较1次
比较 j = 0; j < a.length - 1 -i ; j++
*/
int r = 0;//比较次数
for(int i = 0 ; i < a.length - 1 ; i ++){
for(int j = 0 ; j < a.length -1 -i; j ++){//比较次数
//比较a[j]和a[j+1]
for(int n = 0 ; n < a.length ; n++){
System.out.print(a[n]+"\t");//比较之前先打印一次,然后比较一次打印一次.
}
System.out.println();//打印换行
System.out.println();//打印换行
if (a[j] > a[j+1]){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
r++;//比较次数
}
}
for( int i = 0; i < a.length ; i ++){
System.out.print(a[i]+"\t");
}
System.out.println();
System.out.println("比较"+r+"次");
}
}