起泡排序
起泡排序作为排序算法里最基础的算法
从本质来将,起泡排序可以分成两部分:前缀无序序列 和 后缀有序序列
思路和代码实现如下:
其中Bubble函数负责一轮从前到后的扫描交换,返回true代码本轮有逆序对
BubbleSort函数负责调用Bubble函数
1 |
|
运行结果:
1 | 排序前: 3 5 8 6 7 9 88 55 66 |
再改进
上面算法是在基础起泡排序算法上改进了的:通过sorted标记本轮扫描比较是否有逆序对(是否进行了交换),如果上一趟扫描交换过程中不存在逆序对说明序列已经是有序的了,此时可以结束排序算法。
再改进方法:记录上一趟扫描交换过程中的所进行的最后一次交换
1 | #include <vector> |