Sort 基數排序 兩種實現

2021-07-08 11:05:42 字數 1111 閱讀 6231

1、lsd-最低位優先

//獲取資料中最大的位數(1)a為儲存資料的陣列。(2)為陣列的個數

int maxbit(int a,int num)

}return d;

}/*從低位開始桶排序*/

void lsd_radix_sort(int a,int num)

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

for(j=num-1;j >= 0;j--)//從後往前遍歷,為了保證較大資料在較小資料後面

for(j=0;j//將臨時資料賦給原陣列,一次迴圈結束

radix *= 10; //基數擴大十倍,即往高位進一位。

}//釋放

delete tmp;

delete count;

}

2、msd-最高位優先

/*從高位開始桶排序,(1)a表示陣列.(2)p表示當前的起始位置(3)所需排序的資料的數目(4)d表示位數*/

void msd_radix_sort(int a,int p,int num,int d)

for(i=p;i10;

count[k]++;

tempcount[k]++;

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

for(i=p;i//將陣列按次序排好,存到tmp中

for(i=p;iint v = 0;

//對每個桶內的資料在進行下一輪的排序

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

}delete tmp;

delete count;

delete tempcount;

}

3、main函式:

void main()

; int count = sizeof(a) / sizeof(a[0]);

lsd_radix_sort(a,count);

//int d = maxbit(a,count);

//msd_radix_sort(a,0,count,d);

for(int i=0;icout

<" ";

}cout

<}

c 實現基數排序

以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...

基數排序 佇列實現

基數排序是一種不需要比較就能實現排序的演算法思維,主要步驟為分配和收集的過程,重複這個過程於最大數的位數後,排序結束。以下是完全以佇列模擬桶的分配收集過程。標頭檔案 單鏈表部分 typedef int elemtype typedef struct lnode lnode,linklist int ...

python 實現基數排序

由桶排序改進來的 從最低位到最高位依次桶排序 最後輸出最後排好的列表 def radixsort list,d for k in range d d輪排序 每一輪生成10個列表 s for i in range 10 因為每一位數字都是0 9,故建立10個桶 for i in list 按第k位放入...