八大排序指基數排序

2021-10-05 18:51:56 字數 1668 閱讀 9291

一、基數排序的思想

基數排序也稱「桶排序」。

它的基本思想就是:假設一組待排序資料,先對於資料基於個位排序,然後是基於百位排序,基於千位排序,最後使整個序列有序。

二、**基數排序

給定一組待排序序列

[51 26 7 33 27 534 7648 649 67 49]

1、第一趟排序

按每個陣列的個位數字歸到相應的桶裡,如下圖所示:

第一趟排序過後將每個桶裡的資料按順序摘出來,新的序列為:

[51 33 534 26 7 27 67 7648 649 69]

這樣這組資料就按個位數字排列有序了。

2、第二趟排序

按新生成的陣列的十位數字歸到相應的桶裡,如下圖所示:

接著按順序將數字摘出來,得到新的序列為:

[7 26 27 33 534 7648 649 49 51 67]

3、第三趟排序

按新生成的陣列的百位數字歸到相應的桶裡,如下圖所示:

接著繼續將每個數字按順序摘出來得到新的序列:

[7 26 27 33 49 51 67 534 7648 649]

4、第四趟排序

按新生成的陣列的千位數字歸到相應的桶裡,如下圖所示:

接著繼續將每個數字摘出來得到新的序列:

[7 26 27 33 49 51 67 534 649 7648]

這樣整個序列就排列有序了。

以上就是基數排序的整個過程。

三、**實現

//個位代表1   十位代表2   百位代表3

//求最大位數

intgetnumfin

(int arr,

int len)

}while

(max !=0)

}//獲取哪一位的數字

intgetfinnumber

(int val, iint pos)

void

radix

(int arr,

int len,

int fin)

;//代表每個桶當前可插入的元素的下標或者當前桶中的元素

int arrindex =0;

int buckectindex =0;

for(i; i <

10; i++

)for

(i =

0; i < len; i++

)for

(i =

0; i <

10; i++)}

for(i =

0; i <

10; i++)}

void

radixsort

(int arr,

int len)

}

八大排序 基數排序

基數排序 將整形10進製按每位拆分,然後從低位到高位依次比較各個位。每次比較完進行排序,直到整個陣列有序 主要分為兩個過程 1 分配,先從個位開始,根據位值 0 9 分別放到0 9號桶中 比如53,個位為3,則放入3號桶中 2 收集,再將放置在0 9號桶中的資料按順序放到陣列中 重複 1 2 過程,...

八大排序之基數排序

個人部落格 建議先看排序綜述,傳送門 資料結構與演算法系列之一 八大排序綜述。基數排序 英語 radix sort 是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。由於整數也可以表達字串 比如名字或日期 和特定格式的浮點數,所以基數排序也不是只能使用於整數...

八大排序(五) 基數排序

基數排序與之前的其他七種排序方法都不同,它不需要比較關鍵字的大小。以下用乙個例子來講解基數排序 假設有乙個陣列 73,22,93,43,55,14,28,65,39,81 1.首先根據個位數的數值,在走訪數值時將它們分配至編號0到9的桶子中,分配結果如下圖 2.將這些桶子中的數值按順序重新串接起來,...