Maison >développement back-end >tutoriel php >L'évolution du tri multidimensionnel des tableaux PHP : explorer une nouvelle génération d'algorithmes de tri

L'évolution du tri multidimensionnel des tableaux PHP : explorer une nouvelle génération d'algorithmes de tri

WBOY
WBOYoriginal
2024-04-29 16:15:011160parcourir

Visant aux exigences de tri des tableaux multidimensionnels, un nouvel algorithme de tri multidimensionnel est proposé, optimisé sur la base du principe de tri à bulles. Les étapes de mise en œuvre comprennent : l'initialisation du tableau trié. Parcourez les éléments du tableau dans l’ordre. Appelez une fonction de comparaison pour comparer des éléments adjacents. Si le résultat de la comparaison est -1, les éléments sont échangés. Renvoie le tableau trié.

Lévolution du tri multidimensionnel des tableaux PHP : explorer une nouvelle génération dalgorithmes de tri

L'évolution du tri multidimensionnel des tableaux PHP : explorer une nouvelle génération d'algorithmes de tri

Lorsqu'il s'agit de tableaux multidimensionnels, le tri est une exigence courante. PHP fournit une variété de fonctions de tri, mais elles sont quelque peu inadéquates pour les scénarios de tri multidimensionnels complexes. Cet article présentera un algorithme de tri multidimensionnel novateur et efficace pour aider les développeurs à faire face facilement aux divers besoins de tri.

Algorithme de tri nouvelle génération

L'algorithme de tri que nous proposons est basé sur le principe du tri à bulles, mais est optimisé pour la gestion de tableaux multidimensionnels. La clé de l'algorithme est :

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;
}

Fonction de comparaison

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;
}

Exemple pratique

Voici un exemple montrant comment utiliser cet algorithme pour trier un tableau multidimensionnel contenant des chaînes et des nombres :

$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);

Sortie :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn