最簡單快速的排序法之桶排法

2021-09-30 12:06:19 字數 1158 閱讀 2985

前提:0-100內的隨機數n個,實現從小到大(從大到小)排序。

實現:新建乙個長度為101的陣列,value初始化為0。陣列每個key代表0-100中的數字,value值表示0-100中任意乙個陣列的出現次數。

通俗點說就是每個key代表乙個桶,我們有101個桶,每個桶上表上數字0-100。把要排序的數字扔到對應的桶裡,桶裡扔乙個數字時相應的key的value值就+1,表示桶裡有幾個數字。

**實現:

$numbers = array(63,6,98,54,88,5,89,16,59,10,31,28,1,61,59,66,91,19,10,38,22,63,16); //需要排序的數字

$tmparr = array_fill(0, 101, 0); //生成鍵值是0-100值是0的陣列

$sortarr = array(); //排序後的陣列

for($count=count($numbers), $i=0; $i<$count; $i++)

for($count=count($tmparr), $j=0; $j<$count; $j++)

}print_r($sortarr);

方法封裝:

/**

* 排序之桶排法

* @param array $numbers 需要排序的數字組

* @param int $arrlen 臨時陣列的長度,可以理解為要排序的陣列中最大的數字

* @return array $sortnumbers 排序後的陣列

**/function barrel_sort($numbers, $arrlen)

for($count=count($tmparr), $j=0; $j<$count; $j++)}}

return $sortnumbers;

}$numbers = array(63,6,98,54,88,5,89,16,59,10,31,28,1,61,59,66,91,19,10,38,22,63,16); //需要排序的數字$sortnumbers = barrel_sort($numbers, 101);

print_r($sortnumbers);

最簡單的桶排序

問你乙個問題 現在有3 6 1 5 3 7 六個數字,你怎麼把它們從小到大排序呢?你肯定是找到最小的1拿出來,接著是3,一直到7對吧!1。準備桶 你得確定你排序的數字在哪個區域,比如說你要排序的數字中最大的是100 那你就得準備乙個a 101 的陣列,這裡就有102個桶了 2。排序 你要對3 6 1...

最快最簡單的排序 「桶排序」

先來看乙個問題 有一列 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,表...