複習資料結構:排序演算法(八)——基排序
基排序是外排序,穩定的排序演算法。
它的時間複雜度:O(d(r+n)),d為每個數的長度,r表示基數,n表示陣列中元素的個數。
基數排序是另外一種比較有特色的排序方式,它是怎麼排序的呢?我們可以按照下面的一組數字做出說明:12、 104、 13、 7、 9
(1)按個位數排序是12、13、104、7、9
(2)再根據十位排序104、7、9、12、13
(3)再根據百位排序7、9、12、13、104
這裡注意,如果在某一位的數字相同,那麼排序結果要根據上一輪的陣列確定,舉個例子來說:07和09在十分位都是0,但是上一輪排序的時候09是排在07後面的;同樣舉一個例子,12和13在十分位都是1,但是由於上一輪12是排在13前面,所以在十分位排序的時候,12也要排在13前面。
所以,一般來說,10基數排序的演算法應該是這樣的?
(1)判斷資料在各位的大小,排列資料;
(2)根據1的結果,判斷資料在十分位的大小,排列資料。如果資料在這個位置的餘數相同,那麼資料之間的順序根據上一輪的排列順序確定;
(3)依次類推,繼續判斷資料在百分位、千分位......上面的資料重新排序,直到所有的資料在某一分位上資料都為0。
說了這麼多,寫上我們的程式碼。也希望大家自己可以試一試
參考連結:
http://blog.csdn.net/feixiaoxing/article/details/6876831
http://blog.csdn.net/hguisu/article/details/7776068
http://blog.csdn.net/xiazdong/article/details/8462393
相關文章
- 複習資料結構:排序演算法(六)——堆排序資料結構排序演算法
- 複習資料結構:排序演算法(七)——桶排序資料結構排序演算法
- 複習資料結構:排序演算法(二)——氣泡排序資料結構排序演算法
- 複習資料結構:排序演算法(四)——歸併排序資料結構排序演算法
- 複習資料結構:排序(一)——插入排序資料結構排序
- 複習資料結構:排序(三)——選擇排序資料結構排序
- 資料結構與演算法(八):排序資料結構演算法排序
- 複習資料結構:排序演算法(五)——快速排序的各種版本資料結構排序演算法
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序
- 【Java資料結構與演算法】第八章 快速排序、歸併排序和基數排序Java資料結構演算法排序
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- 資料結構與演算法 基礎排序資料結構演算法排序
- 演算法與資料結構基礎 - 排序(Sort)演算法資料結構排序
- 資料結構和演算法面試題系列—排序演算法之基礎排序資料結構演算法面試題排序
- 資料結構與演算法——排序演算法-氣泡排序資料結構演算法排序
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 資料結構與演算法——排序演算法-歸併排序資料結構演算法排序
- 資料結構與演算法——排序資料結構演算法排序
- 演算法與資料結構之基礎排序演算法演算法資料結構排序
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 資料結構與演算法——堆排序資料結構演算法排序
- 【資料結構與演算法】堆排序資料結構演算法排序
- 資料結構與演算法之排序資料結構演算法排序
- 資料結構與演算法----# 一、排序資料結構演算法排序
- 資料結構與演算法:堆排序資料結構演算法排序
- 資料結構與演算法——快速排序資料結構演算法排序
- 資料結構與演算法——桶排序資料結構演算法排序
- 【資料結構與演算法】內部排序之五:計數排序、基數排序和桶排序(含完整原始碼)資料結構演算法排序原始碼
- [資料結構與演算法] 排序演算法資料結構演算法排序
- 資料結構 桶排序 基數排序MSD c++ swift 版本資料結構排序C++Swift
- 資料結構學習(C++)續——排序【3】交換排序 (轉)資料結構C++排序
- 資料結構和演算法(Golang實現)(25)排序演算法-快速排序資料結構演算法Golang排序
- 演算法與資料結構高階排序演算法之歸併排序演算法資料結構排序
- 資料結構和演算法面試題系列—排序演算法之快速排序資料結構演算法面試題排序
- 資料結構與排序資料結構排序
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序
- 【資料結構】堆排序資料結構排序