数据结构和算法一直以来是程序员的基本功,不会数据结构和算法就不是一个合格的程序员。一直以来八大排序算法是数据结构和算法的难点,很多萌新小白都不会,今天将解决着烦恼,以简单明了讲述数据结构中的八大排序算法。
凡亿教育《数据结构与算法实战课程》
常见的八大排序算法有直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。如下:
八大排序算法性能比较如下:
由此表可以看出:直接插入排序和冒泡排序速度较慢,但效率较高。当初始序列整体或局部有序时,快速排序算法效率降低;当排序序列较小且不追求稳定性,选择直接插入排序;若要求稳定性,选择冒泡排序。
1、直接插入排序
对于给定的一组记录,初始时假定第一个记录自成一个有序的序列,其余的记录为无需序列;接着从第二个记录开始,根据记录的大小以此将当前处理的记录插入到其前面的有序序列中,直到最好一个记录插入到有序序列中为止。
2、希尔排序
希尔排序也叫做缩小增量排序,其思路是:首先将待排序的元素分为多个子序列,使每个子序的元素个数相对较少,对各个子序分别进行直接插入排序操作,带到整个待排序序列基本有序后,在对所有元素进行一次直接插入排序。
3、冒泡排序
首先将序列中的左右元素进行一次比较,保证右边元素始终大于左边的元素,当序列长度为n,重复n-1轮比较。
4、快速排序
思路是“分而治之”,对于一组给定的记录,通过一次排序后,将原序列分为两部分,其中前部分的所有记录均比后部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均为有序为止。
5、简单选择排序
对于给定的一组记录,结果第一轮比较后得到最小的记录,然后将记录与第一个记录的位置互换;接着对不包括第一个记录意外的其他记录进行第二轮排序,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。。
6、堆排序
将序列构成一颗完全二叉树,再将该完全二叉树改造成堆,可获得最小值,输出最小值,删除掉其根节点,继续改造剩余树成堆,依次输出最小值,直到所有节点均输出,最后得到一个排序。
7、归并排序
对于给定的一组记录,首先将两个相邻的长度为1的子序列进行归并,得到n/2长度为2或1的有序子序列,再将其两两归并,反复执行此过程,直到得到一个有序序列为止。
8、基数排序
(1)分配:先从个位开始,根据位值(0-9)分别放到0-9号桶中。
(2)收集:再将放置在0-9号桶中的数据按顺序放到数组中。
以上是数据结构与算法中的八大排序算法思路讲解。
欲了解更多的数据结构知识,可关注凡亿课堂。