可以拿下力扣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);
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...