![](https://img-blog.csdnimg.cn/direct/e071bdeccfed42eaa5b46d20c12d3c94.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序
文章平均质量分 83
排序算法
苏貝貝
勤奋耕耘,收获满满;不辍努力,未来可期。
展开
-
【数据结构】计数排序
按照上面的思想,数组count的下标都从0开始的话,如果数组a为{1000,1111,1222,1333,1444,…,2000},那么我们要开辟count数组,数组下标从0开始到2000结束,前1000个空间都被浪费了,所以我们还可以改进一下。可想而知,如果有一个数组的所有的值相差不大,那计数排序的效率是非常高的。这样我们就能知道数组a的元素范围range,动态开辟有range个元素的数组count,为了方便,我们用calloc函数开辟,这样count的每个元素的初始值都为0。原创 2024-03-27 21:44:32 · 441 阅读 · 0 评论 -
【数据结构】归并排序(用递归)
将数组不断分成2部分,直到这两个部分都是一个元素,将这两个部分当成两个数组,因为都是只有一个元素,所以这两个数组都是有序的,再将两个有序数组合并成一个有序数组。再看10和6的右半边是1和7,将这两个部分当成两个数组,因为也是只有一个元素,所以这两个数组都是有序的,再将两个有序数组合并成一个有序数组1,7。然后将有序数组6,10和1,7再次合并成一个有序数组1,6,7,10……归并排序核心步骤:。在讲归并排序之前,问问自己,如果有两个数组都是有序的(升序),如何将这两个有序数组合并成一个有序数组呢。原创 2024-03-24 19:58:19 · 469 阅读 · 0 评论 -
【数据结构】直接插入排序
(N-1) = (N+1)(1+N-1)/2 = N*(N-1)/2,所以时间复杂度为O(N^2)……+(N-1) = (N+1)(1+N-1)/2 = N*(N-1)/2,所以时间复杂度为O(N^2)。下面代码中,因为最后一个元素一定是tmp,所以end+1原创 2024-03-19 12:10:51 · 1231 阅读 · 1 评论 -
【数据结构】希尔排序
排序的目的是让数组从接近有序到有序。希尔排序法的基本思想是:先选定一个整数gap,把待排序文件中所有记录分成gap个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行排序。然后,取gap=gap/2或者gap=gap/3+1(里有下面会说),重复上述分组和排序的工作。3.希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的希尔排序的时间复杂度都不固定。原创 2024-03-19 21:47:50 · 1084 阅读 · 0 评论