104.数组冒泡排序

Posted 梦想骚年工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了104.数组冒泡排序相关的知识,希望对你有一定的参考价值。

冒泡排序意思是轻的上浮,重的下沉。原理是两个相邻的比较,如果前面的元素比后面的元素大就交换位置

如int数组{24, 69, 80, 57, 13}

第1次循环

24<69不用换位置

69<80不用换位置

80>57需要换位置,变成了{24, 69, 57, 80, 13}

80>13需要换位置,变成了{24, 69, 57, 13, 80}

只要前面的比后面的大就换位置,第1次循环完成后最大的就排在最后了

第2次循环

24<69不用换位置

69>57需要换位置,变成了{24, 57, 69, 13, 80}

69>13需要换位置,变成了{24, 57, 13, 69, 80}

69<80不用换位置

第1次循环完成后第二大的就排在倒二位置了

第3次循环

24<57不用换位置

57>13需要换位置,变成了{24, 13, 57, 69, 80}

57<69不用换位置

69<80不用换位置

第4次循环

24>13需要换位置,变成了{13, 24, 57, 69, 80}

24<57不用换位置

57<69不用换位置

69<80不用换位置

从上面可以看出,第1次循环,比较4次,最大的就出来了,第2次循环实际就不用和最后的比较了,比较3次就可以,第3次循环比较2次,第4次循环比较1次,长度为5的数组循环比较4次

代码实现:

for (int i = 0; i < arr.length - 1; i++) {//arr.length - 1是比较次数

        for (int j = 0; j < arr.length -1 - i; j++) {//减1为防止arr[j + 1]索引越界,减i是每循环一次就少比较一次

            if(arr[j] > arr[j + 1]) {//前面的比后面的大就换值

//下面三行是最普通的交换两个变量的值

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }


以上是关于104.数组冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

数组冒泡排序选择排序二分查找法

从数组冒泡排序迁移到链表冒泡排序

数组中冒泡排序直接选择排序反序排序原理与区别

冒泡排序

数组冒泡排序

12.数组三--数组的冒泡排序与快速排序