桶排序+基数排序+计数排序
桶排序
?
1.原理:
將需要排序的數組分在有限的桶里
然后對每個桶中的數分別排序
(對每個桶的操作:1.別的排序算法 2.以遞歸的方式繼續使用桶排序)
?
2.過程:
?
3.舉個例子:
設有數組 array = [29, 25, 3, 49, 9, 37, 21, 43]
那么數組中最大數為 49
先設置 5 個桶
那么每個桶可存放數的范圍為:0~9,10~19,20~29,30~39,40~49
然后分別將這些數放人自己所屬的桶
然后,分別對每個桶里面的數進行排序
或者在將數放入桶的同時用插入排序進行排序
最后,將各個桶中的數據有序的合并起來
?
基數排序:
?
1.原理:
桶排序的拓展(我沒看出來這兩者的聯系喵喵喵?
將整數按位數切割成不同的數字,然后按每個位數分別比較。
?
2.過程:
首先,將要比較的數值統一成同樣的數位長度(數位少的在前面補0)
然后,從最低位開始,依次進行一次排序
3.再舉個栗子(假裝圖文并茂嘿嘿嘿...
通過基數排序對數組{53, 3, 542, 748, 14, 214, 154, 63, 616},它的示意圖如下:
?
?
計數排序:
?
1.原理:
把需要排序的數組 分到有限的桶里
?
2.過程:
假設有一個a數組,其中裝著要排序的數列
a數列的數據范圍為[x,y)
創建一個大小為y的桶數組r
將容量為y的桶數組中的每一個單元都看作一個獨立的"桶"
遍歷每個數組a
a的值為r數組的下標
并將該桶存的數值+1
?
3.又舉個栗子:
a[3] = 5
r[5]++;
?
假設a={8,2,3,4,3,6,6,3,9}, max=10。
此時,將數組a的所有數據都放到需要為0-9的桶中。如下圖:
?
?
轉載于:https://www.cnblogs.com/darlingroot/p/10786129.html
總結
以上是生活随笔為你收集整理的桶排序+基数排序+计数排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019-04-28 Mybatis g
- 下一篇: 【分享】虹软人脸识别应用开发过程