算法介绍
冒泡算法源于水中气泡变化,以升序排序为例,从第一个元素开始,依次比较相邻两个元素的大小,将大的数放在后面;扫描一遍后,最大的数就被放在了最后面;然后进行第二轮扫描,将第二大的数放在倒数第二的位置上;一直重复扫描 n-1 遍。
视频演示
视频地址:https://www.bilibili.com/video/av18176281
python代码
1 | # -*- coding: utf-8 -*- |
算法分析
无论真实数据如何,比较次数固定为:n*(n-1)/2。
最好情况下,数据刚好是升序的,不需要交换数据;
最坏情况下,数据刚好是降序的,每次比较都需要交换数据,即交换数据次数为:n*(n-1)/2。
冒泡排序时间复杂度为:O(n^2)
冒泡排序空间复杂度为:O(1)