记忆口诀:
插帽龟(插入、冒泡、归并),它很稳(稳定)。
选帽插(选择、冒泡、插入),它很慌(“慌”谐音“方”,平方,即平均时间复杂度为O())。
恩老二(),快归队(快排、归并、堆排序)。
一、插入排序
和前面元素相比,找到对应位置插入。
二、希尔排序
对每一个子表进行直接插入排序。
步长d的初始值一般为元素个数折半,即。
每一个子表完成插入排序后,步长折半,不断迭代,直到步长为1。
三、冒泡排序
相邻元素两两相比,较大值/较小值不断往前冒。
四、快速排序
小放枢轴左,大放枢轴右,
高低所指换,换针向枢轴,
高低所遇点,枢轴所落处,
递归再排至,左右仅一头。
快速排序的运行时间与划分是否对称有关,其最坏情况发生在划分过程产生的两个区域分别包含(n-1)个元素和1个元素的时候。则T(n)满足
解此递归方程,可得。
在最好情况下,每次划分所取的枢轴都恰好为中值,即每次划分都产生两个大小为的区域。此时,T(n)满足
其解为。
五、简单选择排序
先扫,再找,往前放。
找到最小的元素后,和第一个元素交换。
不断迭代,直到遍历整个线性表。
六、堆排序
先建堆(大根堆),再找数。
找一次,建一次。
找到数,会输出(和最后的结点互换位置后输出)。
输出完,排序完。
七、归并排序
两有序并为一有序。
另建表,分别从两序列头依次对比。
八、基数排序
从最低位开始,按照该位数字依次填入。
看个位:
看十位:
参考视频:【【数据结构】八大排序算法过程详解】https://www.bilibili.com/video/BV1WP411c7hS?vd_source=816c40c22f794a17d5e5bbfafb0bce18
up主讲解的很清楚!😊👍