這篇文章主要介紹了web開發(fā)中桶排序是什么意思,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)于2013年開始,先為鳳凰等服務(wù)建站,鳳凰等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鳳凰企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
桶排序(Bucket sort)是一種基于計(jì)數(shù)的排序算法(計(jì)數(shù)排序可參考上節(jié)的內(nèi)容),工作的原理是將數(shù)據(jù)分到有限數(shù)量的桶子里,然后每個(gè)桶再分別排序(有可能再使用別的排序算法或是以遞回方式繼續(xù)使用桶排序進(jìn)行排序)
設(shè)置固定數(shù)量的空桶。
把數(shù)據(jù)放到對(duì)應(yīng)的桶中。
對(duì)每個(gè)不為空的桶中數(shù)據(jù)進(jìn)行排序。
拼接不為空的桶中數(shù)據(jù),得到結(jié)果。
動(dòng)畫演示GIF加載有點(diǎn)慢,請(qǐng)稍等片刻^_^
首先,設(shè)置固定數(shù)量的空桶,在這里為了方便演示,設(shè)置桶的數(shù)量為 5 個(gè)空桶
遍歷整個(gè)數(shù)列,找到最大值為 56 ,最小值為 2 ,每個(gè)桶的范圍為 ( 56 - 2 + 1 )/ 5 = 11
再次遍歷整個(gè)數(shù)列,按照公式 floor((數(shù)字 – 最小值) / 11) 將數(shù)字放到對(duì)應(yīng)的桶中
比如,數(shù)字 7 代入公式 floor (( 7 – 2 ) / 11 ) = 0 放入 0 號(hào)桶
數(shù)字 12 代入公式 floor((12 – 2) / 11) = 0 放入 0 號(hào)桶
數(shù)字 56 代入公式 floor((56 – 2) / 11) = 4 放入 4 號(hào)桶
當(dāng)向同一個(gè)索引的桶,第二次插入數(shù)據(jù)時(shí),判斷桶中已存在的數(shù)字與新插入數(shù)字的大小,按照左到右,從小到大的順序插入(可以使用前面講解的插入排序)實(shí)現(xiàn)
比如,插入數(shù)字 19 時(shí), 1 號(hào)桶中已經(jīng)有數(shù)字 23 ,在這里使用插入排序,讓 19 排在 23 前面
遍歷完整個(gè)數(shù)列后,合并非空的桶,按從左到右的順序合并 0 ,1 ,2 ,3 ,4 桶。
這樣就完成了 桶排序
為了更好的讓讀者用自己熟悉的編程語言來理解動(dòng)畫,筆者將貼出多種編程語言的參考代碼,代碼全部來源于網(wǎng)上。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“web開發(fā)中桶排序是什么意思”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!