ホームページ  >  記事  >  バックエンド開発  >  PHP 配列の多次元ソートの進化: 新世代のソート アルゴリズムの探索

PHP 配列の多次元ソートの進化: 新世代のソート アルゴリズムの探索

WBOY
WBOYオリジナル
2024-04-29 16:15:011088ブラウズ

多次元配列のソート要件を目的として、バブルソート原理に基づいて最適化された新しい多次元ソートアルゴリズムが提案されています。実装手順には次のものが含まれます。ソートされた配列を初期化します。配列要素を順番に走査します。比較関数を呼び出して、隣接する要素を比較します。比較結果が -1 の場合、要素は交換されます。ソートされた配列を返します。

PHP 配列の多次元ソートの進化: 新世代のソート アルゴリズムの探索

PHP 配列の多次元ソートの進化: 新世代のソート アルゴリズムの探索

複数の配列を扱う場合次元配列では、並べ替えが一般的に必要になります。 PHP にはさまざまな並べ替え関数が用意されていますが、複雑な多次元の並べ替えシナリオにはやや不十分です。この記事では、開発者がさまざまなソートのニーズに簡単に対処できるようにする、斬新で効率的な多次元ソート アルゴリズムを紹介します。

新世代のソート アルゴリズム

私たちが提案するソート アルゴリズムはバブル ソートの原理に基づいていますが、多次元配列の処理用に最適化されています。アルゴリズムの鍵は次のとおりです。

function multi维排序($array, $sortingColumns, $sortOrder = SORT_ASC) {
    $sortedArray = $array;
    $columnsCount = count($sortingColumns);

    for ($i = 0; $i < count($sortedArray); $i++) {
        for ($j = $i + 1; $j < count($sortedArray); $j++) {
            $compareResult = compare($sortedArray[$i], $sortedArray[$j], $sortingColumns, $sortOrder);

            if ($compareResult == -1) {
                swap($sortedArray, $i, $j);
            }
        }
    }

    return $sortedArray;
}

比較関数

function compare($a, $b, $sortingColumns, $sortOrder) {
    foreach ($sortingColumns as $column) {
        if ($a[$column] == $b[$column]) {
            continue;
        }

        if ($sortOrder == SORT_ASC) {
            return $a[$column] < $b[$column] ? 1 : -1;
        } else {
            return $a[$column] > $b[$column] ? 1: -1;
        }
    }

    return 0;
}

実用的なケース

以下は、その方法を示す例です。このアルゴリズムを使用して文字列と数値を含む多次元配列を並べ替えるには:

$array = [
    ['name' => 'John Doe', 'age' => 25],
    ['name' => 'Jane Smith', 'age' => 30],
    ['name' => 'Peter Jones', 'age' => 28]
];

$sortedArray = multi维排序($array, ['age', 'name'], SORT_ASC);

print_r($sortedArray);

出力:

[
    ['name' => 'John Doe', 'age' => 25],
    ['name' => 'Peter Jones', 'age' => 28],
    ['name' => 'Jane Smith', 'age' => 30]
]

以上がPHP 配列の多次元ソートの進化: 新世代のソート アルゴリズムの探索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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