Day2: 冒泡排序

Posted 粤台计科

tags:

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

要点:

冒泡排序是一种交换排序


交换排序:两两比较待排序的关键字,发现两个关键字的顺序不对时候(数字大的在数字小的前面),交换位置,直到没有反序的数字为止。


基本思想:

以数组{13,8,24,3,18}为例。


第一趟:

第一次排序:8与13对比,8小于13,交换位置:8 13 24 3 18

第二次排序:13与24对比,13小于24,不换位置:8 13 24 3 18

第三次排序:24与3对比,3小于24,交换位置:8 13 3 24 18

第四次排序:24与18对比,18小于24,交换位置:8 13 3 18 24

第一趟一共进行了4次比较,排序结果:8 13 3 18 24


第二趟:

第一次排序:8和13对比,8小于13,不交换位置:8 13 3 18 24

第二次排序:13和3对比,3小于13,交换位置:8 3 13 18 24

第三次排序:13和18对比,13小于18,不交换位置:8 3 13 18 24

第二趟一共进行了3次比较,排序结果:8 3 13 18 24


第三趟:

第一次排序:8和3对比,8大于3,交换位置:3 8 13 18 24

第二次排序“8和13对比,8小于13,不换位置:3 8 13 18 24

第三趟一共进行了2次比较,排序结果:3 8 13 18 24


第四趟:

第一次排序:3和8对比,3小于8,不交换位置:3 8 13 18 24

第四趟一共进行了1次比较,排序结果:3 8 13 18 24


最终结果:

3 8 13 18 24


由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即



冒泡排序最好的时间复杂度为O(n),即只走了一趟就排完成。

冒泡排序最坏的时间复杂度为O(n^2) 。


综上:冒泡排序总的平均时间复杂度为:O(n^2) 。


完整代码如下:



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

为啥冒泡排序被称为冒泡排序?

冒泡排序算法有几种写法?

nodejs实现冒泡排序和快速排序

java编程的冒泡等排序示例

深度解析(十五)冒泡排序

冒泡排序