c 基數排序

2022-05-01 11:42:12 字數 1338 閱讀 5014

題目和我的前幾個排序一樣

#include using namespace std;

int arrlength(int arr) //測出int陣列的長度

/*** 遞迴,找出陣列最大的值

** @param arrays 陣列

* @param l 左邊界,第乙個數

* @param r 右邊界,陣列的長度

* @return

*/int findmax(int arrays,int l,int r)

}}void radixsort(int arrays)

//**桶子裡的元素

int k = 0;

//有10個桶子

for (int j = 0; j < 10; j++)}}

}}int main()

; radixsort(arrays);

for (int i = 0;i <= arrlength(arrays) - 1 ;i ++)

cout << arrays[i] << " ";

return 0;

}

假設原來有一串數值如下所示:

73, 22, 93, 43, 55, 14, 28, 65, 39, 81

首先根據個位數的數值,在走訪數值時將它們分配至編號0到9的桶子中:

01 81

2 22

3 73 93 43

4 14

5 55 6567

8 28

9 39

第二步:

接下來將這些桶子中的數值重新串接起來,成為以下的數列:

81, 22, 73, 93, 43, 14, 55, 65, 28, 39

接著再進行一次分配,這次是根據十位數來分配:

01 14

2 22 28

3 39

4 43

5 55

6 65

7 73

8 81

9 93

第三步:

接下來將這些桶子中的數值重新串接起來,成為以下的數列:

14, 22, 28, 39, 43, 55, 65, 73, 81, 93

這時候整個數列已經排序完畢;如果排序的物件有三位數以上,則持續進行以上的動作直至最高位數為止。

基數排序沒有關鍵字的比較,通過"分配"和"收集"過程來實現排序

排序過程中,要注意"分配"和"收集"的順序(重點)

基數排序是一種借助於多關鍵字排序的思想對單關鍵字排序的方法,是通過"分配"和"收集"的過程來實現排序.

一定要用memset!!

基數排序 C

首先我們引入乙個多關鍵排序的概念 多關鍵字排序 假如現在有乙個員工表,要求按照薪資排序,年鈴相同的員工按照年齡排序。比如氣泡排序就是一種穩定排序,堆排序就是不穩定的排序,品,你細細的品 那麼對32,13,94,52,17,54,93排序,是否可以看做多關鍵字排序?比如32 13 52排序,先看個位2...

基數排序(c )

題目描述 根據輸入,輸出基數排序的每趟排序結果。輸入格式 輸入數字為正整數,先輸入排序數字個數,然後輸入需要排序的數字序列。輸出 每趟排序結果。要求 程式需要實現排序,其他可以使用stl包。示例測試集 輸入 8 2343666 152310 5594 592783278 輸出 152310 2343...

排序 基數排序 C

2.執行結果 3.演算法實現 1.基數排序是在箱排序的基礎之上進行擴充套件和完善的 2.通過判斷待排序的陣列中的位數,決定進行建立箱子的個數和遍歷的次數.例如 待排序中最多的位數為3位,那麼就需要建立三個箱子 當然也可以建立兩個,進行復用,記得復用之前要清除之前的箱子 這裡我就不復用了.那麼需要進行...