學習基數排序之前首先學習計數排序

2021-07-07 05:08:19 字數 521 閱讀 6236

學習基數排序之前首先學習計數排序。

計數排序假設每個元素都是在0到k之間的乙個整數。

基數排序的基本思想,對於每個元素x,如果我們知道了小於x的元素的個數,就可以確定輸出陣列中元素x的位置,那麼直接將元素x放到輸出陣列中。比如有3小於x的元素,那在輸出陣列中,x肯定位於第4個位置。

計數排序的演算法用偽**描述為:

17counting-sort(a,k)

// 初始化陣列c

for i=0 to k

c[i]=0

// 統計a[j]元素出現的次數,儲存到c陣列中

for j=0 to a.length

c[a[j]]=c[a[j]]+1

// 統計小於等於a[j]元素的個數

for k=0 to k

c[k]=c[k-1]+c[k]

// 將a中的元素放在b中正確的位置

for i=a.length to 0

b[c[a[i]]-1]=a[i]

c[a[i]]=c[a[i]]-1

基數排序學習

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

基數排序學習

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

基數排序學習

可以拿下力扣164.最大間距。基數排序 英語 radix sort 是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。基數排序是穩定性的排序。步驟 基數排序的時間複雜度是o k n 其中n是排序元素個數,k是數字位數。include include defi...