乙個簡單有趣的演算法
基數排序是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。
由於整數也可以表達字串(比如名字或日期)和特定格式的浮點數,所以基數排序也不是只能使用於整數。
基數排序的方式可以採用 lsd(least significant digital)或 msd(most significant digital),lsd 的排序方式由鍵值的最右邊開始,而 msd 則相反,由鍵值的最左邊開始。
簡單按數字排序來說:我們可以先按個位排好序,然後百位排序,千位排序…等等,直到最高位
最後得到的就是排好序的序列
一張足以解釋
//獲得最大數字
return maxnum;
}int
getsorttimes
(int maxnum)
//需要排序的次數
return times;
}void
bucketsort
(int
*a,int n,
int t)
//把桶中的資料,返回給原來的陣列中
int k=0;
for(
int i=
0;i<
10;i++)}
}void
radixsort
(int
*a,int n)
}int
main()
;int n=6;
radixsort
(a,n)
;for
(int i=
0;i)return0;
}結果:
參考部落格:
基數排序學習
快排雖稱快速排序,但是其嚴格來講 只能稱為是基於比較的排序演算法中相對很優秀的演算法 排序演算法的時間效率下界是o nlogn 是僅針對基於比較的排序演算法的 而今天講的o n 的基數排序演算法 是一種基於內容而不基於比較的排序演算法 下面進入正題,先來嘗試了解基數排序演算法 給出幾個數 239,1...
基數排序學習
可以拿下力扣164.最大間距。基數排序 英語 radix sort 是一種非比較型整數排序演算法,其原理是將整數按位數切割成不同的數字,然後按每個位數分別比較。基數排序是穩定性的排序。步驟 基數排序的時間複雜度是o k n 其中n是排序元素個數,k是數字位數。include include defi...
排序 基數排序
基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...