【我就瞎記記,你就瞎看看】小演算法-桶排序
簡單意義上的桶排序:
- 桶排序的原理是先安排N+1個桶作為容器,若資料範圍為N的話。
- 然後將測試資料(所需排序的資料)進行迴圈,放入對應的桶內。資料一定是在範圍N內的。
- 最後,迴圈桶裡的元素,並且輸出,進行從大到小或從小到大的排序。
例如:
- 我們的取值範圍是10,那麼就要定義一個 11長度的陣列
$arr
. 並且讓所有的元素值都為0 - 然後,對需要排序的陣列進行迴圈 如
5,3,5,2,8
.(這邊取值範圍其實才8) - 將資料依次對應
$arr
桶陣列內元素,即 如果是5,則使$arr[5]++
. - 這時候
$arr[2]=1 $arr[3]=1 $arr[5]=2 $arr[8]=1
- 然後迴圈$arr的陣列,若
$arr[2]=1
,則迴圈輸出元素2
一次,$arr[5]=2
,則迴圈輸出5
兩次 - 結果輸出即為 2 3 5 5 8
- 如果迴圈數值是從大到小 則會是從大到小的排序
設定預設陣列,預設值為0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
$arr[$i] = 0;
}
//設定測試的五個資料
$arr1 = array(5, 3, 5, 2, 8);
//根據資料 對預設陣列的對應元素進行+1; J的取值範圍不能等於$arr1陣列長度
for ($j = 0; $j < count($arr1); $j++) {
//這邊給相應的陣列值+1
$arr[$arr1[$j]]++;
}
//開始迴圈輸出 預設陣列 $arr 裡面相應的值
for ($k = 0; $k <= 10; $k++) {
for ($l=1; $l <=$arr[$k]; $l++) {
echo "$k <n>";
}
}
?>
缺點:
- 浪費空間.
- 無法進行浮點資料的排序.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2798374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 沒用過Node.js,就別瞎逼逼Node.js
- 【瞎寫程式碼】系列之表面小演算法演算法
- js模組化(自己瞎玩記錄而已)JS
- 手寫演算法並記住它:桶排序演算法排序
- 輸給小學生後,我發現「瞎幾把按」也是一種智慧
- 《演算法筆記》5. 字首樹、桶排序、排序演算法總結演算法筆記排序
- 排序演算法__桶排序排序演算法
- 趕快看看Java11,不然你就out了!Java
- 排序演算法之——桶排序排序演算法
- jsliang 陪你瞎叨叨 2JS
- 常用排序演算法之桶排序排序演算法
- 【瞎寫程式碼】系列之redux表面理解Redux
- 瞎折騰-友情連結自助申請
- 【瞎寫】熊是什麼顏色的?
- 記錄--createObjectURL這個API真好用,我舉幾個場景你們就懂了ObjectAPI
- 別瞎用辦公軟體了,來看看這款辦公神器——office 2019
- 瞎說系列之Object.assign入門Object
- 瞎說系列之正規表示式入門
- Rails中文化不需要瞎折騰AI
- 那些IT圈的佛系,我就服你們!
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 程式設計師為什麼千萬不要瞎努力?程式設計師
- 瞎侃:發現OEP的一個思路。 (749字)
- webpack 學習筆記:上手就來Web筆記
- CSS漸變-快來感受CSS的偉大吧(差點閃瞎我的狗眼)CSS
- 排序演算法速記排序演算法
- 小米筆記本吹成PPT了 看完這篇你就知道為什麼我要吐槽了筆記
- 別再瞎找專案了,公眾號依舊是你不二選擇
- 堆排序就這麼簡單排序
- 拓撲排序就這麼回事排序
- 快速排序就這麼簡單排序
- Elasticsearch從入門到放棄:瞎說MappingElasticsearchAPP
- 面試時寫不出排序演算法?看這篇就夠了。面試排序演算法
- 十大經典排序演算法動畫,看我就夠了!排序演算法動畫
- 面試時寫不出排序演算法?看這篇就夠了面試排序演算法
- 面試就業過程的記錄了面試就業
- 桶排序排序
- 學習方法的錯誤:瞎想、粗看與蠻幹