Java笔记整理 —— 冒泡排序

冒泡排序

用化繁为简和先死后活两种编程思想讨论冒泡排序。

根据先死后活原理,我们先就 [24,69,80,57,13] 这个数组进行讨论。

然后根据化繁为简,我们先不管第几轮排序和第几次比较之间的关系,只讨论每一轮排序:

//第一轮排序
        for(int j = 0;j < 4;j++){
            if(arr[j]>arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1]= temp;
            }
        }
        //第二轮排序
        for(int j=0;j<3;j++){
            if(arr[j]>arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1]= temp;
            }
        }
        //第三轮排序
        ......

可以发现,每一轮排序的内容都是一样的,只不过j的判断退出条件不太一样。看出离开每一轮排序的关系后,我们再看看怎么控制排序的轮数:

for(int i = 0;i < 4;i++) // 控制轮数

然后我们就要进行从死到活中的“到活”了—— 假设数组长度为n, j每次都从0开始,判断条件是 j<n - 1 - i。i也是从0开始,i<n - 1。

for(int i = 0;i<arr.length;i++){
    for(int j = 0;j<arr.length - 1 - i;j++){
        if(arr[j]>arr[j+1]){
            temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}
经验分享 程序员 微信小程序 职场和发展