前提: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,表...