冒泡排序
百度百科里描述冒泡排序算法的原理如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
python代码实现
优化一:
如果某趟比较结束之后发现没有元素发生移动,则说明排序已经完成,可以直接跳出,设置一个flag来记录是否有元素发生移动。
优化二:
记录每趟排序结束时最后移动元素的位置,说明这个元素之后的所有元素已经排好序。
带入数据测试:
从运行结果可以看出,对于杂乱无章的数组来说,两种优化都不能有效提高算法效率,但对于顺序基本正确的数组,优化2可以显著提高效率。
领取专属 10元无门槛券
私享最新 技术干货