为了更好地表达我的想法,我们设置:
- A [] - 需要排序的原始数字数组;
- B [] - 辅助数组,B []的最大索引最大
A [];
中的值
- C [] - 与A [];
长度相同的结果数组
例如,我们有A [5],其值为{3,2,4,1,2}。
- 首先我们将计算B [5]中每个值的频率,然后得到
{0,1,2,1,1}。
- 然后我们需要通过将B [i]与B [i-1]相加来计算小于或等于A [i]的数量。所以B现在变为{0,1,3,4,5}。
- 我们去A [i]并检查B [A [i]]中的值以检查有多少数量小于或等于A [i],然后C [B [A [i]] - 1 ] = A [i],B [A [i]] = B [A [i]] - (i从MAX到0)
醇>
我的问题是为什么我们需要第2步和第3步?相反,为什么我们不检查STEP 1中的频率并将B的索引值插入C中B [i]次以直接获取排序后的数组C?