ホームページ  >  記事  >  バックエンド開発  >  単純な意味でのバケットソート(PHP実装)

単純な意味でのバケットソート(PHP実装)

藏色散人
藏色散人転載
2020-02-22 14:08:202440ブラウズ

簡単な意味でのバケット ソート:

バケット ソートの原理は、データ範囲が 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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
前の記事:PHP ヒントの共有次の記事:PHP ヒントの共有