可以简化计数排序算法

时间:2016-03-30 00:20:21

标签: algorithm sorting

为了更好地表达我的想法,我们设置:

  • A [] - 需要排序的原始数字数组;
  • B [] - 辅助数组,B []的最大索引最大 A [];
  • 中的值
  • C [] - 与A [];
  • 长度相同的结果数组

例如,我们有A [5],其值为{3,2,4,1,2}。

  1. 首先我们将计算B [5]中每个值的频率,然后得到 {0,1,2,1,1}。
  2. 然后我们需要通过将B [i]与B [i-1]相加来计算小于或等于A [i]的数量。所以B现在变为{0,1,3,4,5}。
  3. 我们去A [i]并检查B [A [i]]中的值以检查有多少数量小于或等于A [i],然后C [B [A [i]] - 1 ] = A [i],B [A [i]] = B [A [i]] - (i从MAX到0)
  4. 我的问题是为什么我们需要第2步和第3步?相反,为什么我们不检查STEP 1中的频率并将B的索引值插入C中B [i]次以直接获取排序后的数组C?

0 个答案:

没有答案