この記事は主に PHP で実装されたバケット ソート アルゴリズムを詳しく紹介します。興味のある方は参考にしていただければ幸いです。
簡単な意味でのバケットソート:
バケットソートの原理は、データ範囲がNの場合、まずN+1個のバケットをコンテナとして配置することです。
次に、テストデータ (並べ替える必要があるデータ) をループし、対応するバケットに入れます。データは範囲 N 内にある必要があります。
最後に、バケット内の要素をループして出力し、大から小、または小から大の順に並べ替えます。
例:
値の範囲は 10 なので、長さ 11 の配列 $arr を定義する必要があります。そして、すべての要素の値を 0 にします
次に、必要な配列をループします。 5 ,3,5,2,8 などのソート対象 (ここでの値の範囲は実際には 8 のみです)
$arr バケット配列の要素に順番に対応します。つまり、5 の場合は $ になります。 arr[5]++.
このとき $ arr[2]=1 $arr[3]=1 $arr[5]=2 $arr[8]=1
次に $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ソートアルゴリズムシリーズの詳細な説明_phpスキル。
Pythonアルゴリズムの学習バケットソートアルゴリズムの例(ブロックソート)
Pythonのデータ構造とアルゴリズムの一般的な分布ソート方法の例[バケットソートと基数ソート]_python
以上がPHPで実装されたバケットソートアルゴリズムの共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。