桶排序之後 基數排序

2021-06-13 03:09:40 字數 1027 閱讀 9762

和桶排序一樣,也不是基於比較的。

基數排序一般用於整數的處理,它的基本原理是:一直想把它說的更白話一點,可是,哎。。。

我們可以想象一下,如果現在只有幾個各位數   2   6   3   7 ,

那麼裝入陣列後是 :

修改相應的位置後:

那麼再由後往前掃瞄,7 -> 3 -> 6 -> 2

對應到位置後為:2 3 6 7 已經排好序了。。。

那麼對於兩位呢?我們想象一下,例如一趟後的順序是:23  34  26  27  17 我們可以看看個位數,顯然是排序好的一次!那麼再有10位數處理,10位數大的必然放到後面,由於個位數已經排好序,那麼對於同樣十位數的資料在第二次排序的時候,必有  前面的數十位數==後面數的十位數,前面的個位數 < 後面個位數( 因為演算法穩定性 )。所以就這樣結束了。。。。

code:( 在九度oj上已經通過,不過最後乙個超級大資料的時候tle了,5555...,但是演算法實現應該正確 )

#include #include void radix_count(int* idx, int m, int* p_data, int len)

for (i = 0; i < len; ++i)

for (i = 1; i < 10; ++i)

for (i = len - 1; i >= 0; --i)

for (i = 0; i < len; ++i)

free(p_sort);

free(p_count);

}void radix_sort(int* p_data, int len)

}if (flag)

radix_count(radix_data, 10, p_data, len);

}free(radix_data);

}int main()

radix_sort(a, n);

for (i = 0; i < n; ++i)

printf("\n");

} return 0;

}

基數排序(桶排序)

1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...

基數排序(桶排序)

思想 先把這組資料的個位排有序,再把十位排有序,再排百位 千位 include include include include void showarr int arr,int len printf n int getmaxnumfin int arr,int len 找陣列中最大數,並求出最大數的...

基數排序 桶排序

1.基數排序又稱桶排序,具體思想就是將數值當成陣列的下標儲存。2.將所有數值拿出個位來比較,例如值為m的就存入下標為m的陣列中。3.將比較後的陣列拿出即為按個位排序好的陣列,再將這個排序好的陣列按十位排序。4.比較完個十百千所有位數以後即排序完成。兩種 實現思路都是一樣的,實現方式1可直接改寫為c或...