基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

public class Dome2 {
public static void main(String[] args) {
int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
for(int i=0;i<arr.length-1;i++){
for(int index=0;index<arr.length-1;index++){
if(arr[index]>arr[index+1]){
int temp=arr[index];
arr[index]=arr[index+1];
arr[index+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
改进:
public class test {
public static void main(String[] args) {
int[] arr = { 2, 4, 6, 7, 3, 5, 1, 9, 8 };

    int low = 0;
    int high = arr.length - 1; // 设置变量的初始值
    int tmp, j;
    while (low < high) {
        for (j = low; j < high; ++j) // 正向冒泡,找到最大者
            if (arr[j] > arr[j + 1]) {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        --high; // 修改high值, 前移一位
        for (j = high; j > low; --j) // 反向冒泡,找到最小者
            if (arr[j] < arr[j - 1]) {
                tmp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = tmp;
            }
        ++low; // 修改low值,后移一位
    }

    for (int k = 0; k < arr.length; k++) {
        System.out.print(arr[k] + " ");
    }

}

}

12-13 06:50
查看更多