ホームページ > バックエンド開発 > PHPチュートリアル > ビーズアルゴリズムを使用して PHP 配列をソートする

ビーズアルゴリズムを使用して PHP 配列をソートする

藏色散人
リリース: 2023-04-10 13:36:01
オリジナル
2622 人が閲覧しました

PHP クラスを使用して整数配列を並べ替える方法の簡単な分析 」では、PHP クラスを使用して配列を並べ替える方法を紹介します。そこでこの記事では、興味深いビーズ アルゴリズムを紹介し、それを使用して PHP 配列を並べ替えます。

まず、そろばんアルゴリズムとは何なのかを簡単にご紹介します。

ビーズ アルゴリズム (ビーズ ソーティングとも呼ばれます) は、2002 年に Joshua J. Arulanandham、Cristian S. Calude、Michael J. Dinneen によって開発された自然な並べ替えアルゴリズムであり、ヨーロッパの理論コンピューターで使用されました。このアルゴリズムは、欧州理論計算機科学協会 (EATCS) の記者会見で発表されました。

ビーズソートのデジタルハードウェア実装とアナログハードウェア実装の両方で O(n) を達成できますが、このアルゴリズムのソフトウェア実装ははるかに遅くなる傾向があり、正の整数のリストをソートする場合にのみ使用できます。

アルゴリズムを簡単に理解した後、直接 コードを実行します:

<?php
function columns($uarr)
{
    $n=$uarr;
    if (count($n) == 0)
        return array();
    else if (count($n) == 1)
        return array_chunk($n[0], 1);
    array_unshift($uarr, NULL);
    $transpose = call_user_func_array(&#39;array_map&#39;, $uarr);
    return array_map(&#39;array_filter&#39;, $transpose);
}
function bead_sort($uarr)
{
    foreach ($uarr as $e)
        $poles []= array_fill(0, $e, 1);
    return array_map(&#39;count&#39;, columns(columns($poles)));
}
echo &#39;原始数组: &#39;.&#39;
&#39;;
var_dump(array(5,3,1,3,8,7,4,1,1,3));
echo &#39;
&#39;.&#39;珠排序后 : &#39;.&#39;
&#39;;
var_dump(bead_sort(array(5,3,1,3,8,7,4,1,1,3)));
ログイン後にコピー

実行結果は次のとおりです:

ビーズアルゴリズムを使用して PHP 配列をソートする

上記のコードでは、いくつかの重要な関数を紹介します。

1、array_unshift() 関数: 配列に新しい要素を挿入するために使用されます。新しい配列の値は配列の先頭に挿入されます。追加された要素は、配列内でパラメーター内と同じ順序で全体として追加されます。この関数は、配列内の要素の数を返します。

2, call_user_func_array: コールバック関数を呼び出し、コールバック関数のパラメータとして配列パラメータを使用します。構文は「call_user_func_array(callable $)」です。 callback, array $param_arr):mixed" は、最初のパラメータをコールバック関数 (callback) として呼び出し、パラメータ配列 (param_arr) をコールバック関数のパラメータとして渡すことを意味します。

3, array_map : 配列の各要素にコールバック関数を適用します。

最後に、私たちのプラットフォームの最新の無料コース「0からPHPの世界に入る」をお勧めしたいと思います~ぜひ学んでください!

以上がビーズアルゴリズムを使用して PHP 配列をソートするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート