ホームページ  >  記事  >  バックエンド開発  >  PHPで実装されたバケットソートアルゴリズムの共有例

PHPで実装されたバケットソートアルゴリズムの共有例

小云云
小云云オリジナル
2018-01-08 10:12:481642ブラウズ

この記事は主に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。