(1 3 6 1)線性排序 基數排序

2021-06-29 04:48:12 字數 1454 閱讀 6119

當序列中元素範圍比較大時,就不適合使用計數排序。針對這種情況,就有了基數排序(radix sort),這是一種按位排序。它仍然是以計數排序為基礎。

基數排序的基數:十進位制數的基數自然是10,二進位制的基數自然是2。通常有兩種按位排序策略:1.高位優先法(most significant digit first,msd):簡單講就是從高位排起。2.低位優先法(least significant digit first,lsd):它與高位優先相反,從低位排起。從排序效果上看,高位優先比較直觀,但卻涉及到遞迴的過程,故最常用的還是低位優先法。說它以計數排序為基礎,理由如下,以最常見的十進位制數為例:

仔細理解上圖,高位優先的過程你也一定可以推測出來。下面給出低位優先下的**。

[cpp]view plain

copy

#include

#include

using

namespace

std;  

//獲取最大位數

intget_max_digit(

intarray, 

intn)  

while

(max)  

return

digit;  

}  //基數排序

void

radixsort(

intarray, 

intn)  

for(i = 0; i 

count[(array[i] / d) % 10]++;  

for(i = 1; i 

count[i] += count[i - 1];  

//資料回放

線性排序之 基數排序

基數排序,radix sorting,也叫bin sort,bucker sort,基數排序法是屬於穩定性的排序,其時間複雜度為o nlog r m 其中r為所採取的基數,而m為堆數,在某些時候,基數排序法的效率高於其它的穩定性排序法。基數排序的方式可以採用lsd leastsgnificant d...

線性時間排序之基數排序

標頭檔案 number.h pragma once include include include using namespace std class number include number.h number number int num number number void number nu...

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...