ホームページ  >  記事  >  バックエンド開発  >  PHP 配列の安定したソート: 等しい要素の順序を維持する

PHP 配列の安定したソート: 等しい要素の順序を維持する

WBOY
WBOYオリジナル
2024-04-26 15:15:01417ブラウズ

PHP 配列の安定した並べ替えは、比較時に元のインデックスを考慮するカスタム コンパレーターを作成し、uasort() 関数を使用してキーに従って値を並べ替え、その値をキーを含む要素に設定することで実現できます。元のインデックス; これらのメソッドは、等しい要素が元の順序と同じ順序でソートされることを保証します。

PHP 数组稳定排序:保持相等元素的顺序

#PHP 配列の安定した並べ替え: 等しい要素の順序の維持

#はじめに

安定した並べ替えにより、等しい要素の並べ替え順序が元の順序と同じになることが保証されます。ソートを安定させるには、次の比較が有効です。

a == b => sort(a) <= sort(b)

PHP 配列ネイティブの

sort() 関数と rsort() 関数は不安定です。この記事では、安定した並べ替えの方法を検討します。

メソッド

1. カスタム コンパレータ

要素が等しい場合にカスタム コンパレータを使用します。元のインデックス:

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
}

次に、それを

usort() または uksort() 関数で使用します:

usort($arr, 'cmp');

2 を使用します。 )

uasort()

キーに基づいて値を並べ替えます。ksort() はキーを並べ替えます。したがって、配列内の値を元のインデックスを含む要素に設定して、キーを並べ替えることができます。スコアは、同じスコアを持つ生徒の元の順序を維持しながら並べ替えられます。<pre class='brush:php;toolbar:false;'>$indices = array_keys($arr); uasort($arr, function($a, $b) use ($indices) { if ($a == $b) { return 0; } return $indices[array_search($a, $arr)] &lt; $indices[array_search($b, $arr)] ? -1 : 1; });</pre>出力:

$scores = [
    'John' => 90,
    'Mary' => 85,
    'Bob' => 85,
    'Alice' => 95
];

uasort($scores, function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
});

print_r($scores);

結論

上記のメソッドは PHP で実装できます。 等しい要素の順序が維持されるように、配列の順序を安定させます。

以上がPHP 配列の安定したソート: 等しい要素の順序を維持するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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