看到这个冒泡排序优化,还敢说不懂吗
对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。
原始冒泡
相邻元素比较,大数后沉小数前移。
判断对象有序,提前结束循环
类似于:[9, 1, 2, 3, 4, 5, 6, 7, 8] 这样的部分有序待排序数组,使用原始冒泡发现除了第一次,之后均为无效操作。观察发现,当一次比较之后,如果没有发生交换行为,则认为该对象已经有序,便可提前结束循环。
解'>'的耦合,扩大函数使用范围
创建函数对象,避免对调用函数对象的修改
双向比较,又称搅拌排序、鸡尾酒排序
时间复杂度为O(N**2)的排序算法中对冒泡排序面试面的最多,大概就是冒泡算法容易优化吧!而且优化之后也是相当便捷的。
作者丨GHope
https://www.jianshu.com/p/f74fdcb2aa0c
往期精彩回顾