凡亿教育-小文
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 程序员必看:数据结构的八大排序算法
程序员必看:数据结构的八大排序算法

数据结构和算法一直以来是程序员的基本功,不会数据结构和算法就不是一个合格的程序员。一直以来八大排序算法是数据结构和算法的难点,很多萌新小白都不会,今天将解决着烦恼,以简单明了讲述数据结构中的八大排序算法。

凡亿教育《数据结构与算法实战课程

常见的八大排序算法有直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。如下:

d8f65c42519636257a24fa95620d2b.png

八大排序算法性能比较如下:

ee67d267696b803bab809139e5597d.png

由此表可以看出:直接插入排序和冒泡排序速度较慢,但效率较高。当初始序列整体或局部有序时,快速排序算法效率降低;当排序序列较小且不追求稳定性,选择直接插入排序;若要求稳定性,选择冒泡排序。

1、直接插入排序

对于给定的一组记录,初始时假定第一个记录自成一个有序的序列,其余的记录为无需序列;接着从第二个记录开始,根据记录的大小以此将当前处理的记录插入到其前面的有序序列中,直到最好一个记录插入到有序序列中为止。

2、希尔排序

希尔排序也叫做缩小增量排序,其思路是:首先将待排序的元素分为多个子序列,使每个子序的元素个数相对较少,对各个子序分别进行直接插入排序操作,带到整个待排序序列基本有序后,在对所有元素进行一次直接插入排序。

3、冒泡排序

首先将序列中的左右元素进行一次比较,保证右边元素始终大于左边的元素,当序列长度为n,重复n-1轮比较。

4、快速排序

思路是“分而治之”,对于一组给定的记录,通过一次排序后,将原序列分为两部分,其中前部分的所有记录均比后部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均为有序为止。

5、简单选择排序

对于给定的一组记录,结果第一轮比较后得到最小的记录,然后将记录与第一个记录的位置互换;接着对不包括第一个记录意外的其他记录进行第二轮排序,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。。

6、堆排序

将序列构成一颗完全二叉树,再将该完全二叉树改造成堆,可获得最小值,输出最小值,删除掉其根节点,继续改造剩余树成堆,依次输出最小值,直到所有节点均输出,最后得到一个排序。

7、归并排序

对于给定的一组记录,首先将两个相邻的长度为1的子序列进行归并,得到n/2长度为2或1的有序子序列,再将其两两归并,反复执行此过程,直到得到一个有序序列为止。

8、基数排序

(1)分配:先从个位开始,根据位值(0-9)分别放到0-9号桶中。

(2)收集:再将放置在0-9号桶中的数据按顺序放到数组中。

以上是数据结构与算法中的八大排序算法思路讲解。

欲了解更多的数据结构知识,可关注凡亿课堂

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论