PHP實現基數排序的方法詳解

2022-10-04 11:30:11 字數 1073 閱讀 3957

基數排序是根據關鍵字中各位的值,通過對排序的n個元素進行若干趟「分配」與「收集」來實現排序的。

不妨通過乙個具體的例項來展示一下,基數排序是如何進行的。

設有乙個初始序列為: r 。

我們知道,任何乙個阿拉伯數,它的各個位數上的基數都是以0~9來表示的。

所以我們不妨把0~9視為10個桶。

我們先根據序列的個位數的數字來進行分類,將其分到指定的桶中。例如:r[0] = 50,個位數上是0,將這個數存入編號為0的桶中。

分類後,我們在從各個桶中,將這些數按照從編號0到編號9的順序依次將所有數取出來。

這時,得到的序列就是個位數上呈遞增趨勢的序列。

按照個位數排序: 。

接下來,可以對十位數、百位數也按照這種方法進行排序,最後就能得到排序完成的序列。

<?php /**基數排序**/

/** 獲取第幾位上的數字

**百位數 = 2345%1000/100

*/function getn($num,$n)

$m = (int)(($num % $value /($value/10)));

return $m;}/*

*/function paixu(程式設計客棧$arr)

for($i=0;$iwww.cppcns.comr[$i],$m);

if($thisnum!=0) $flag = 1;

$b[$thisnum] = $arr[$i];//將陣列中的數放入容器中

}} print_r($arr);

//var_dump($b);

}/**基數排序**結束**/

paixu(array(65,3,45,6,7,8,31,100,1000,1234))

?>

執行結果:

複製** **如下:

array ( [0] => 3 [1] => 6 [2] => 7 [3] => 8 [4] => 31 [5] => 45 [6] => 65 [7] => 100 [8] => 1000 [9] => 1234 )

基數排序還可以應用在查詢重複數,查詢間隔數等方面

**不重要(我的**仍需改進),思路是關鍵

基數排序詳解及例項實現

基數排序 也叫桶排序 是一種很特別的排序方法,它不是基於比較進行排序的,而是採用多關鍵字排序思想 即基於關鍵字各位的大小進行排序的 借助 分配 和 收集 兩種操作對單邏輯關鍵字進行排序。基數排序又分為最高位優先 msd 排序和最低位優先 lsd 排序 最低位用的比較多 是根據鍵值的每位數字來分配桶的...

python 基數排序詳解

今天簡單的說下基數排序,基數排序比較特殊,他不用元素之間進行比較,也不用元素之間交換位置,你只需要堆元素進行分類就可以了,這個也恰巧就是基數排序的魅力。基數排序思想 基數排序是桶排序的一種擴充套件,將整數按位數分割成不同數字,然後按照每個位數分別比較 過程 1.分配 先從個位開始,根據位值 0 9 ...

排序演算法 基數排序詳解

筆者今天學習字尾陣列,發現需要用到基數排序,所以趕緊學習一波。基數排序是基於關鍵字排序,先比較第乙個關鍵字,再比較第二個關鍵字。舉個栗子 假如我們有一堆數,17,8,25,78,123,512,250 實際操作時,是將依次將個位 十位 百位的相同的數放入同乙個桶中,高位不足補零。然後再從桶中收集元素...