2010-11-16 42 views
1

我有一個數組中的正整數的大列表,並希望使用珠排序,但發現沒有很好的文檔。有沒有人有珠子排序的代碼?c珠排序想要幫助

回答

0

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倍,它會變得更糟你的數組元素得到較大。我不會推薦使用它。