ホームページ >バックエンド開発 >PHPチュートリアル >単純な意味でのバケットソート(PHP実装)
簡単な意味でのバケット ソート:
バケット ソートの原理は、データ範囲が N の場合、まず N 1 個のバケットをコンテナとして配置することです。
# 次に、テスト データ (並べ替える必要があるデータ) をループし、対応するバケットに入れます。データは範囲 N 内にある必要があります。
# 最後に、バケット内の要素をループして出力し、大から小、または小から大の順に並べ替えます。
例:
● 値の範囲は 10 なので、長さ 11 の配列 $arr を定義する必要があります。そして、すべての要素の値をbe 0
# 次に、5、3、5、2、8 など、並べ替える必要がある配列をループします。
● データを、 $arr バケット配列、つまり 5 の場合、$arr[5] を作成します。
#● この時点では $arr[2]=1 $arr[3]=1 $arr[ 5]=2 $arr[8]=1● 次に、$arr の配列をループします。$arr[2]=1 の場合、ループは要素 2 を 1 回出力します。 =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 サイトの
プログラミング入門以上が単純な意味でのバケットソート(PHP実装)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。