排序算法看这一篇文章就够了(附80道大厂面试题)

排序算法属于数据结构和算法的基础内容,并且也是大厂笔试中的高频考点。
 
今天这篇文章来简单梳理一下常见的排序算法、相关资料和大厂面试真题。
 
我们按照下面这幅图来梳理
常见的排序算法
 
按照“平均复杂度”划分,冒泡排序、选择排序、插入排序,它们算一类,这一类算法实现方式不同,但思路相同。都是对待排序数组的元素两两比较,一趟比较就需要n个元素参与计算,比较n趟,算法的平均时间复杂度就是 n^2,是最慢的排序算法。
 
而改进后的算法就是下面的希尔排序、归并排序、快速排序和堆排序,举个形象的例子来说下跟上面的区别,最上面的 3 个排序算法相当于你在公司兢兢业业,一步一步升迁,最终做到CEO的位置,而下面的 4 个算法,相当于破格提拔,跳跃式升迁,比前者就更快当上 CEO。
 
回到算法原理上,它们的目的就是将较小的元素尽可能地大幅往前调。以快速排序为例:
 
待排序数据:[4, 7, 8, 2, 1] ,第一趟排序后结果为:[1, 2, 4, 8, 7]
 
可以发现,元素 1、2 从倒数的位置经过一次排序就可以调到正数的位置,调整效率比冒泡一个一个往上冒快太多了。
 
除快速排序外,希尔排序、归并排序、堆排序都采用的是类似思想。
 
而最后三个排序算法计数排序、桶排序、计数排序,则是将这种跃迁的思想发挥到极致。回到刚刚那个形象的例子,相当于我们已经知道CEO是最高的职位,我们既不用一步一步升迁,也不用跳跃式升迁,一步到位直接坐上CEO位置。
 
对应到算法原理上,就是建立有序的数组(或桶),遍历一次待排序数组,只要将元素填入有序数组(或桶)对应的位置,就完成排序。这种算法虽然效率高,但也有缺点,只支持数字排序并且需要额外空间。
 
每一种算法我都收集了优质的资料和代码实现:
 
冒泡排序
选择排序
插入排序
希尔排序
归并排序
快速排序
堆排序
计数排序
基数排序
桶排序
面试题
...
共 76 道大厂面试真题,完整版点击: 76到排序算法大厂真题
如果对你有用,请给个 star, 后续不断更新优质内容。
 

欢迎公众号 渡码

posted @ 2021-09-29 10:25  渡码  阅读(952)  评论(0编辑  收藏  举报