计数排序的稳定性

Paste_Image.png

这是算法导论里面的算法,排序算法是稳定的。

思考:

为什么9~11的for循环里要倒着遍历?
这样倒着遍历,而且放进去一个就将C数组对应的值(表示前面有多少元素小于或等于A[i])减去一。如果有相同的数x1,x2,那么相对位置后面那个元素x2放在(比如下标为4的位置),相对位置前面那个元素x1下次进循环就会被放在x2前面的位置3(因为C[A[J]]--)。从而保证了稳定性。

2016.3.6更新

思考:为什么计数排序是稳定的?为什么第9行要倒着遍历?

解决:
稳定性在于:在程序6,7行执行结束后,C数组中的元素C[i]代表着:小于等于i的输入元素的个数。
而9-11行倒着遍历时,如上述所说。

关键是 C[i]代表着:小于等于i的输入元素的个数。

那么,如果 C[i]代表着:大于等于i的输入元素的个数。我想9-11行正着遍历才可以保证稳定性。试验后,在此贴出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,359评论 0 33
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,702评论 0 89
  • 题记: 直接插入排序(稳定)-->希尔排序 : 属于插入排序 简单选择排序(稳定)-->堆排序 :属于选择排序...
    Pitfalls阅读 7,888评论 2 3
  • 凋萎的林中响起一声鸟鸣, 它显得空虚,在这凋萎的树林。 可这鸣声又这般地圆润, 当它静止在那创造它的一瞬, 宽广地...
    东丰林波阅读 1,828评论 0 0
  • 看着穿军装的自己,好像也有了那么一点点一本正经的样子。 要是你看见现在的我,会不会觉得我跟从前有了一点不同。 从高...
    H0712阅读 1,364评论 0 0

友情链接更多精彩内容