小白學演算法2 9 基數排序

2021-07-08 17:54:37 字數 648 閱讀 7228

標籤: 小白學演算法

基數排序的時間複雜度為o(

d∗2n

) ,d表示待排序數字的位數,2n是因為分配和收集都需要o(

n)的時間,空間複雜度為o(

n+m)

,m表示桶的數量。

假設我們要對十進位制的數進行排序,那麼需要10個桶表示0~9。首先從個位開始,把個位是0的數放進0號桶,個位是1的數放進1號桶……依次類推,直到把個位是9的數放進9號桶。把所有桶中的資料依次倒出來,再從十位開始,把十位是0的數放進0號桶……十位是1的數放進1號桶……依次類推,直到把十位是9的數放進9號桶。把所有桶中的資料依次倒出來,再從百位開始……直到最高位入桶再出桶,這時出桶後的資料就是已經排序完的資料了。

過程演示如下:

最上面一行表示待排序資料,藍色表示桶的編號,黃色表示出桶的資料,其餘表示入桶的結果。

class radixsort 

//資料出桶

for (i=0; idelete bucket;

return a;

}int getdigit(int x, int m)//獲取數x的第m位數值

;//1000表示可以對0~9999的數排序

return (x/a[m]) % 10;}};

基數排序演算法

include stdafx.h include iostream include math.h using namespace std struct radixsort 建立迴圈鍊錶 radixsort creatlink else le ls ls new radixsort 為下乙個節點在堆記...

基數排序演算法

以下內容為程式 int quicksort int p,int n extern int insertsort int p,int n static int partition int p,int n,int m static int quick sort int p,int n 快速排序演算法在 ...

基數排序演算法

經典排序演算法 基數排序radix sort 原理類似桶排序,這裡總是需要10個桶,多次使用 首先以個位數的值進行裝桶,即個位數為1則放入1號桶,為9則放入9號桶,暫時忽視十位數 例如 待排序陣列 62,14,59,88,16 簡單點五個數字 分配10個桶,桶編號為0 9,以個位數數字為桶編號依次入...