基數排序學習

2022-05-09 03:06:10 字數 1076 閱讀 5943

可以拿下力扣164. 最大間距。

基數排序(英語:radix sort)是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。基數排序是穩定性的排序

步驟:

基數排序的時間複雜度是o(k·n),其中n是排序元素個數,k是數字位數。

#include #include 

#define base 10 //

基數桶[0-9]

void radixsort(int arr, int

size)

}int exp = 1; //

位數int *temp = (int*) malloc(size * sizeof(int

));

while (max / exp > 0

) ;

//統計每個基數上有多少個資料

for (i = 0; i < size; ++i)

//求出基數桶的邊界索引,bucket[i]值為第i個桶的右邊界索引+1

for (i = 1; i < base; ++i)

//這裡要從右向左掃瞄,保證排序穩定性

for (i = size - 1; i >= 0; i--)

//將基數桶排好的資料賦值到原資料,完成一趟排序

for (i = 0; i < size; ++i)

exp *= base; //

位數遞增

}

free

(temp);}

intmain()

;

int size = sizeof(arr) / sizeof(int);

//soer

radixsort(arr, size);

//print

inti;

for (i = 0; i < size; ++i)

printf(

"%d

", arr[i]);

printf("\n

");return0;

}

基數排序學習

快排雖稱快速排序,但是其嚴格來講 只能稱為是基於比較的排序演算法中相對很優秀的演算法 排序演算法的時間效率下界是o nlogn 是僅針對基於比較的排序演算法的 而今天講的o n 的基數排序演算法 是一種基於內容而不基於比較的排序演算法 下面進入正題,先來嘗試了解基數排序演算法 給出幾個數 239,1...

基數排序學習

乙個簡單有趣的演算法 基數排序是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。由於整數也可以表達字串 比如名字或日期 和特定格式的浮點數,所以基數排序也不是只能使用於整數。基數排序的方式可以採用 lsd least significant digital ...

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...