Algorithm 改变计数排序算法

Algorithm 改变计数排序算法,algorithm,analysis,Algorithm,Analysis,这是一个计数排序算法。我想将它的最后一个循环更改为对于j否,最后一个循环应该是n到1,因为这将导致排序为a(即,如果两个元素相等,它们将保持其原始顺序) 如果将其更改为1到n,则列表中所有相等的子序列将按相反顺序排列。有时不要紧,但有时要紧,因为使用n downto 1没有缺点,所以应该优先使用它。不,最后一个循环应该是n downto 1,因为这会导致排序为a(即,如果两个元素相等,它们将保持其原始顺序) 如果将其更改为1到n,则列表中所有相等的子序列将按相反顺序排列。有时不要紧,但有时要紧,

这是一个计数排序算法。我想将它的最后一个
循环更改为
对于j否,最后一个循环应该是
n到1
,因为这将导致排序为a(即,如果两个元素相等,它们将保持其原始顺序)


如果将其更改为
1到n
,则列表中所有相等的子序列将按相反顺序排列。有时不要紧,但有时要紧,因为使用
n downto 1
没有缺点,所以应该优先使用它。

不,最后一个循环应该是
n downto 1
,因为这会导致排序为a(即,如果两个元素相等,它们将保持其原始顺序)


如果将其更改为
1到n
,则列表中所有相等的子序列将按相反顺序排列。有时不要紧,但有时要紧,因为使用
n downto 1没有缺点,所以应该优先使用。

以上代码绝对正确。如果将最后一个循环从
1更改为n
,则输出将正确,但具有相同值的元素的相对顺序将颠倒。例如,如果原始数组仅包含3个元素,且所有元素都是5,则在
1到n
的情况下,最后5个元素将是第一个元素,最后2个5个元素将是第二个元素,前5个元素将是最后一个元素,即相同元素的相对顺序被颠倒。

上述代码绝对正确。如果将最后一个循环从
1更改为n
,则输出将正确,但具有相同值的元素的相对顺序将颠倒。例如,如果原始数组仅包含3个元素,且所有元素都是5,则在
1到n
的情况下,最后五个元素将是第一个元素,第二个、最后5个将是第二个元素,前5个将是最后一个元素,即相同元素的相对顺序颠倒了。

我认为随着最后一个元素的变化,它将保持稳定,请查看此链接:该页面不准确。你自己试试!!我认为随着这一变化,在过去的一年里,它将是稳定的,请看到这个链接:该页面是不准确的。你自己试试!!可能的重复可能的重复
Counting Sort(A[1,..n]) //C[1,...k] is the temporary memory and k is the range of integers
   for  i<-- 1 to k
      C[i]<-- 0
   for  j<-- 1 to n
      C[A[j]]<--C[A[j]]+1
   for  i<--2 to k
      C[i]<--C[i]+C[i-1]
   for  j<--n downto 1
      B[C[A[j]]]<--A[j]
      C[A[j]]<--C[A[j]]-1