|
有了前兩小節(jié)內(nèi)容的鋪墊,我們的算法之旅正式起航!我們的航程從排序開始。 今天要給大家介紹的就是最快最簡單的排序——桶排序。沒錯,你沒聽錯!你可能會問最快的排序難道不是快速排序嗎,快速排序的時間復(fù)雜度為O(n log n),而桶排序卻只需要O(n)。 桶排序顧名思義需要桶。其中的思想是我們首先要知道所有待排序的范圍,然后需要有在這個范圍的同樣數(shù)量的桶,接著把元素放到對應(yīng)的桶中,最后按順序輸出。 那我們要怎么準(zhǔn)備桶呢?其實很簡單,使用數(shù)組就好了,比如有11個桶,我們只需要聲明一個長度為11的數(shù)組,然后把每個元素往桶中放時,就把數(shù)組指定位置的值加1,最終輸出數(shù)組的下標(biāo),數(shù)組每個位置的值為幾就輸出幾次下標(biāo),這樣就可以實現(xiàn)桶排序了。 下面我們來句一個小例子: 怎么樣,是不是對桶排序有了更直觀的認(rèn)識呢? 接下來我們用代碼來實現(xiàn)數(shù)據(jù)范圍在[0,1000]的整數(shù)進(jìn)行排序。 缺點 試想一下,如果要排序的范圍是0-100萬,使用桶排序方法進(jìn)行排序,那么我們要準(zhǔn)備100萬個桶,這顯然對于計算機(jī)的開銷肯定很大,所以,桶排序在有這時間最快的優(yōu)勢,同時也有這及其耗費內(nèi)存的缺點。所以桶排序有其局限性,適合元素值集合并不大的情況。 適用情況 數(shù)據(jù)范圍不大,但卻又有著海量數(shù)據(jù),這個時候就非常合適用桶排序。
|
|
|