冒泡的思想精髓就是数组中相临的两个数依次相比较,如果左边的数小于右边的数,就将两个数的位置交换,然后继续比较,如果不小于,则不做交换,跳出本次循环,继续用下一位置的数与相临的数做比较,依此类推下去。按这种规则找下去,每轮冒泡会将最小的数冒到最后面。如下代码即为降序冒泡法:
public class ArraySort1
{
public static void main(String[] args){
int [] a = new int[] {9,3,2,8,10,4,22};
for(int i = 0 ; i < a.length-1; i++){
for(int j = 0 ; j < a.length-i-1; j++){
if(a[j] < a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
System.out.println("第"+(i+1)+"轮冒泡:");
for(int k = 0 ; k < a.length; k++){
System.out.print(a[k]+" ");
}
System.out.println();
}
}
}
输出结果:
H:\javase>java ArraySort1
第1轮冒泡:
9 3 8 10 4 22 2
第2轮冒泡:
9 8 10 4 22 3 2
第3轮冒泡:
9 10 8 22 4 3 2
第4轮冒泡:
10 9 22 8 4 3 2
第5轮冒泡:
10 22 9 8 4 3 2
第6轮冒泡:
22 10 9 8 4 3 2
二、升序冒泡写法:
public class ArraySort2
{
public static void main(String [] args){
int [] a = new int[]{11,55,12,22,58,28,99};
for(int i = 0 ; i < a.length-1; i++){
for(int j = 0 ; j < a.length-i-1; j++){
if(a[j]>a[j+1]){
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
System.out.println("第"+(i+1)+"次冒泡");
for(int k = 0 ; k < a.length; k++){
System.out.print(a[k]+" ");
}
System.out.println();
}
}
}