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

WBOY
Libérer: 2024-04-29 16:15:01
original
1129 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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);
Copier après la connexion

Sortie :

[
    ['name' => 'John Doe', 'age' => 25],
    ['name' => 'Peter Jones', 'age' => 28],
    ['name' => 'Jane Smith', 'age' => 30]
]
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal