![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序算法
c++/c
无敌战神聂于涛
这个作者很懒,什么都没留下…
展开
-
计数排序
数组内容 2 1 0 2 1 3 0 2。arr[i] - min 就是数组内容存储值对应的下标 arr[2] - 2 = 1 3对应的下标为1。i + min 存储的值 0+ 2 = 2 1+2 =3。使用一个新的数组,数组大小为待排数组最大值减去最小值加1。存储数组最小值到最大值出现的次数。使用大小为8 的数组。原创 2024-04-25 20:50:26 · 404 阅读 · 1 评论 -
堆排序
交换之后,堆的性质可能被破坏,因为新的堆顶元素不一定是最大的了。因此,需要进行堆调整操作,将剩余元素重新构成一个最大堆。堆顶元素是最大值,将其与最后一个元素交换,相当于将当前最大值放到了已排序部分的末尾。此时最大值为有序序列。5的索引是 1 父节点(1 - 1)/ 2 = 0 左节点2x1+1 = 3。即每个节点都比其子节点大(对于最大堆而言)。调整堆:不断重复,下次调整不算最后的有序序列。数组 a[i] 10 5 7 2 3 6。在建立最大堆的过程中,堆的性质会被满足,确保堆顶元素为最大值。原创 2024-04-25 11:11:32 · 391 阅读 · 1 评论 -
归并排序
【代码】归并排序。原创 2024-04-19 19:57:38 · 84 阅读 · 0 评论 -
快速排序
【代码】快速排序。原创 2024-04-19 19:52:17 · 149 阅读 · 0 评论 -
希尔排序
直接在插入排序基础上加一层gap变化,把里面的步长变化由1改为gap。使用gap 每次折半进行插入排序,最后一次步长为1,肯定排好序。将大的值小的值聚集在一起。原创 2024-04-17 21:07:24 · 281 阅读 · 0 评论 -
插入排序
将数组看成两个数据,第一个一位数字设为有序数组,将后一个值与前面的值逐一比较,大于直接放在原位置,小于则每次比较的值后移一位,找到合适位置插入。原创 2024-04-17 20:02:28 · 102 阅读 · 0 评论 -
冒泡排序
每轮从第一位开始,比较相邻位,大于则交换,则最大位排末尾。比较len - 1轮。原创 2024-04-15 20:51:54 · 120 阅读 · 0 评论 -
选择排序
假设第一位为最小值,设置最小下标变量,与后面几位比较大小,下标变换,结束一轮之后交换;以此类推比较len - 1 轮;原创 2024-04-15 20:14:33 · 114 阅读 · 1 评论