問你乙個問題:現在有3 6 1 5 3 7 六個數字,你怎麼把它們從小到大排序呢?
你肯定是找到最小的1拿出來,接著是3,。。。。一直到7對吧!
1。準備桶:
你得確定你排序的數字在哪個區域,比如說你要排序的數字中最大的是100
那你就得準備乙個a[101]的陣列,這裡就有102個桶了
2。排序:
你要對3 6 1 5 3 7 六個數字進行排序,首先取出第乙個數
3放到a[3]這個桶中,做個標記
取出1放到a[1]這個桶中,做個標記
取出5放到a[5]這個桶中,做個標記
取出3放到a[3]這個桶中,做個標記
取出7放到a[7]這個桶中,做個標記
最後按陣列的排序書序把帶標記的桶從小到大遍歷出來
3。本質就是以陣列下標(有序序列)為參照,去排列數字序列
#include int main()
return 0;
}
優點:時間複雜度為o(m+n)是最快的排序,也是最簡單的排序。
缺點:極度浪費空間,你要對乙個99999999的數進行排序你就
得申請1000000000個桶,就乙個數字都能占用這麼大的空間
最快最簡單的排序 「桶排序」
先來看乙個問題 有一列 0 10 隨機數 5 3 5 2 8 現在要求將它們按照從先到大的順序或從大到小的順序排列,如何去做?在這裡可以需借助乙個一維陣列就可以解決這個問題,首先申請乙個大小為11 的陣列int a 11 編 號從a 0 a 10 剛開始的時候,將a 0 a 10 都初始化為0,然後...
最快最簡單的排序 桶排序
我們學過很多的排序方法,氣泡排序 希爾排序 快速排序 今天我想說的是一種應用起來最快最簡單的排序 桶排序。當你隨機輸入幾個數,進行從小到大 從大到小 依次排序 你會有什麼方法?這裡只需乙個一維陣列即可。申請乙個長度為n的一維陣列。就相當於定義n個變數arr 0 arr n 1 剛開始都初始化為0,表...
最快最簡單的排序 桶排序
只需借助乙個一維陣列,對一組數進行簡單的桶排序。實現 初始化一維陣列 10個元素 每個元素對應的下標用來記錄 0 9 以內待排序數字出現的次數,如a 5 3,代表5數字出現了3次,a 2 0,代表2數字出現了0次 錄入要排序的一組數字,每乙個數字對應陣列下標,用該陣列元素記錄出現的次數 列印每個陣列...