基數排序(radix sort)屬於「分配式排序」(distribution sort),又稱「桶子法」(bucket sort)或bin sort,它是透過鍵值的部份資訊,將要排序的元素分配至某些「桶」中,以達到排序的作用。
1.分配,先從個位開始,根據位值(0-9)分別放到0~9號桶中(比如53,個位為3,則放入3號桶中)
2.收集,再將放置在0~9號桶中的資料按順序放到陣列中
舉例: 24, 13, 16, 107, 5,6 排序:
1、對個位進行排序
13,24,5,6,16,107
2、對十位進行排序
107,5,6,13,16,24
3、對百位進行排序
5,6,13,16,24, 107
(n*k)
空間:o
(n+k)
#include
#include
#define n 10
//陣列長度
#define d 10
//最大位數
intgetdigit
(int m,
int i)
//取整數m的第i位數
return m %10;
}void
radixsort
(int a,
int len)
//如果陣列每個數的第i位都為零if(
!flag)
break
;//即可直接退出迴圈
//將分配陣列的資料依次收集到原陣列中
l =0;
for(j =
0; j <
10; j++)}
//每次分配,收集後初始化分配陣列,用於下一位數的分配和收集
memset
(b,0
,sizeof
(b));}
}int
main()
;radixsort
(a, n)
;}
基數排序 C
首先我們引入乙個多關鍵排序的概念 多關鍵字排序 假如現在有乙個員工表,要求按照薪資排序,年鈴相同的員工按照年齡排序。比如氣泡排序就是一種穩定排序,堆排序就是不穩定的排序,品,你細細的品 那麼對32,13,94,52,17,54,93排序,是否可以看做多關鍵字排序?比如32 13 52排序,先看個位2...
基數排序(c )
題目描述 根據輸入,輸出基數排序的每趟排序結果。輸入格式 輸入數字為正整數,先輸入排序數字個數,然後輸入需要排序的數字序列。輸出 每趟排序結果。要求 程式需要實現排序,其他可以使用stl包。示例測試集 輸入 8 2343666 152310 5594 592783278 輸出 152310 2343...
c 基數排序
題目和我的前幾個排序一樣 include using namespace std int arrlength int arr 測出int陣列的長度 遞迴,找出陣列最大的值 param arrays 陣列 param l 左邊界,第乙個數 param r 右邊界,陣列的長度 return int fi...