この記事では、主に PHP で実装されたバケット ソート アルゴリズムについて詳しく紹介しますが、これには一定の参考値があります。興味のある方は、
簡単な意味でのバケット ソートを参照してください。
バケット ソートの原理は、データ範囲が N の場合、まず N 1 個のバケットをコンテナとして配置することです。
次に、テスト データ (並べ替える必要があるデータ) をループし、対応するバケットに入れます。データは範囲 N 内にある必要があります。
最後に、バケット内の要素をループして出力し、大から小、または小から大の順に並べ替えます。
例:
値の範囲が 10 である場合、長さ 11 の配列 $arr を定義する必要があります。そして、すべての要素の値をbe は 0
次に、5、3、5、2、8 など、並べ替える必要がある配列をループします。(ここでの値の範囲は実際には 8 のみです)
のデータに対応します。 $arr バケット配列を順番に、つまり 5 の場合は $arr[5] を作成します。
この時点では $arr[2]=1 $arr[3]=1 $arr[5]=2 $ arr[8]=1
Then ループ $arr の配列について、$arr[2]=1 の場合、ループは要素 2 を 1 回出力し、$arr[5]=2 の場合、ループは 5 を 2 回出力します。
結果の出力は 2 3 5 5 8
ループ値が大きいものから小さいものへの場合、大きいものから小さいものへ並べ替えられます
<?php //设置默认数组,默认值为0; $arr = array(); for ($i = 0; $i <= 10; $i++) { $arr[$i] = 0; } //设置测试的五个数据 $arr1 = array(5, 3, 5, 2, 8); //根据数据 对默认数组的对应元素进行+1; J的取值范围不能等于$arr1数组长度 for ($j = 0; $j < count($arr1); $j++) { //这边给相应的数组值+1 $arr[$arr1[$j]]++; } //开始循环输出 默认数组 $arr 里面相应的值 for ($k = 0; $k <= 10; $k++) { for ($l=1; $l <=$arr[$k]; $l++) { echo "$k </n>"; } } ?>
欠点:
スペースの無駄。
浮動小数点データをソートできない。
上記がこの記事の全内容です。これが皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
Laravel サービス プロバイダーの開発中に遅延読み込みを設定するときに発生する問題の詳細な説明
##
以上がPHPでのバケットソートアルゴリズムの実装の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。