1
我有一個數組中的正整數的大列表,並希望使用珠排序,但發現沒有很好的文檔。有沒有人有珠子排序的代碼?c珠排序想要幫助
我有一個數組中的正整數的大列表,並希望使用珠排序,但發現沒有很好的文檔。有沒有人有珠子排序的代碼?c珠排序想要幫助
這個頁面有幾種語言,包括C語言實現: http://rosettacode.org/wiki/Sorting_algorithms/Bead_sort
從This Question,來自珠的修改排序使用O(N)
額外的空間,而不是O(N*k)
作爲羅塞塔代碼版本。
void sort(int A[], int N)
{
int i, j;
int *R = calloc(N, sizeof(int));
do for (i = j = 0; i < N; i++)
if (A[i]) { R[j++]++; A[i]--; }
while (j);
for (j = N, i = 0; i < N; i++)
A[i] = R[--j]; // A is now sorted ascending.
free(R);
}
然而,它比qsort
慢至少10倍,它會變得更糟你的數組元素得到較大。我不會推薦使用它。