c 基數排序 zjfxy

2021-10-08 11:11:35 字數 1006 閱讀 7740

基數排序(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...