排序算法
文章平均质量分 78
常见的排序
_WXangin
该来的都会来 不骄不躁 努力就好
展开
-
归并排序【超详细+代码】(递归+非递归)
将已有序的子序合并,从而得到完全有序的序列,即先使每个子序有序,再使子序列段间有序。Onlogn。原创 2024-03-25 00:25:04 · 990 阅读 · 0 评论 -
堆排序【超详细+代码】
所有元素按Ki=K2i2) i = 0 、1、 2… ,则 称为小堆 ( 或大堆) (将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。原创 2024-03-22 03:25:44 · 1366 阅读 · 1 评论 -
选择排序【超详细+代码】
第一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,最大的一个元素,存放在序列的末尾位置,然后再从剩余未排序元素中寻找到最小(大)元素,继续放在起始位置和末尾位置,直到未排序元素个数为0。On2。原创 2024-03-22 01:54:02 · 150 阅读 · 1 评论 -
快速排序【超详细+代码】(hoare+挖坑+前后指针)
任取待排序元素序列中的某元素作为基准值(key),按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。onlogn。原创 2024-03-18 00:11:14 · 663 阅读 · 0 评论 -
冒泡排序【详细+代码】
1、:通过对待排序序列从前向后(从下标较小的元素开始),依次对相邻两个元素的值进行两两比较,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就如果水底下的气泡一样逐渐向上冒。2、3、On2。原创 2024-03-13 00:28:11 · 397 阅读 · 2 评论 -
直接插入排序【详细+代码】
代码的理解:1、排序开始前[0,end]是假想的有序区间;2、每次将第end+1个数作为待插入的值,往有序序列插入时,end的值会动态变化:当待插入值小于第end的数时,end向前移动,直到在有序区间中找到比待插入值小的数停止移动,将待插入值插入到end的后面。:先构造下标为 0~end 的有序序列(end的起始值为0),将第end+1个数字插入到序列中,直到最后一个数字插入到有序序列为止;在此期间更新end的值,使得有序序列在不断的扩大。直到所有的记录插入完为止,得到一个新的有序序列。原创 2024-03-11 21:11:09 · 378 阅读 · 0 评论 -
希尔排序【详细+代码】
1、基本思想:先选定一个整数作为增量(gap),把待排序文件(or数组)中的所有数据分组,每个距离的等差数列为一组,每一对分组进行排序后,整个数据就会更接近有序,当增量(gap)缩小为1时,就是插入排序,但是现在的数组非常接近有序,移动的数据很少,所以效率非常高,所以希尔排序又称为2、过程:1)预排序gap>1时,将距离为gap的分为一组 2)直接排序:gap=1On1.3(平均值)原创 2024-03-12 00:30:02 · 367 阅读 · 1 评论