這裏是我的基數排序功能(升序):基數排序:降序
void RadixSort (int a[], int n)
{
int i, m=0, exp=1, b[MAX];
for (i=0; i<n; i++)
{
if (a[i]>m)
m=a[i];
}
while (m/exp>0)
{
int bucket[10]={0};
for (i=0; i<n; i++)
bucket[a[i]/exp%10]++;
for (i=1; i<10; i++)
bucket[i]+=bucket[i-1];
for (i=n-1; i>=0; i--)
b[--bucket[a[i]/exp%10]]=a[i];
for (i=0; i<n;i++){
a[i]=b[i];
}
exp*=10;
}
}
我嘗試這種通過更換
for (i=0; i<n;i++) {
a[i]=b[i];
}
與
for (i=0; i<n;i++) {
a[i]=b[n-i-1];
}
更改爲降序排序
但它沒有奏效。 我試着用:705,1725,99,9170,7013]
但結果是:9170,7013,1725,99,705]
的最後一個值永遠是錯的。有什麼我錯過了嗎?
爲什麼不直接使用原來的代碼,那麼當它完成,反向名單? –
最後一個值(按降序排序後)總是等於輸入數組中的第一個值(排序前)? – Vikram