題目和我的前幾個排序一樣
#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位,那麼就需要建立三個箱子 當然也可以建立兩個,進行復用,記得復用之前要清除之前的箱子 這裡我就不復用了.那麼需要進行...