Maison > développement back-end > tutoriel php > Tri stable des tableaux PHP : maintenir l'ordre des éléments égaux

Tri stable des tableaux PHP : maintenir l'ordre des éléments égaux

WBOY
Libérer: 2024-04-26 15:15:01
original
472 Les gens l'ont consulté

Un tri stable des tableaux PHP peut être obtenu en : créant un comparateur personnalisé qui prend en compte l'index d'origine lors de la comparaison ; en utilisant la fonction uasort() pour trier les valeurs en fonction de la clé et en définissant la valeur sur l'élément contenant l'index d'origine. ; ces méthodes garantissent que les éléments égaux sont dans le même ordre de tri que dans leur ordre d'origine.

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

Tri stable des tableaux PHP : maintenir l'ordre des éléments égaux

Introduction

Le tri stable garantit que l'ordre des éléments égaux après le tri est le même que l'ordre d'origine. Pour un tri stable, les comparaisons suivantes sont valides :

a == b => sort(a) <= sort(b)
Copier après la connexion

Les fonctions natives sort() et rsort() du tableau PHP sont instables. Cet article explorera les méthodes de tri stable. sort()rsort() 函数是不稳定的。本篇文章将探究稳定排序的方法。

方法

1. 自定义比较器

使用自定义比较器,在相等元素时比较它们的原始索引:

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
}
Copier après la connexion

然后在 usort()uksort() 函数中使用它:

usort($arr, 'cmp');
Copier après la connexion

2. 使用 uasort()

uasort() 根据键对值进行排序,ksort()

Méthode

1. Comparateur personnalisé

Utilisez un comparateur personnalisé pour comparer les indices originaux des éléments lorsqu'ils sont égaux :

$indices = array_keys($arr);
uasort($arr, function($a, $b) use ($indices) {
    if ($a == $b) {
        return 0;
    }
    return $indices[array_search($a, $arr)] < $indices[array_search($b, $arr)] ? -1 : 1;
});
Copier après la connexion
Puis dans usort() ou uksort() :
$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);
Copier après la connexion

2. Utilisez uasort()

🎜🎜uasort() pour trier les valeurs en fonction des clés. , ksort() trie les clés. Vous pouvez donc définir la valeur du tableau sur un élément contenant l'index d'origine, puis trier les clés : 🎜
Array
(
    [Alice] => 95
    [John] => 90
    [Bob] => 85
    [Mary] => 85
)
Copier après la connexion
🎜🎜 Exemple pratique 🎜🎜🎜 Trier un tableau de notes d'élèves par score tout en conservant l'ordre d'origine des élèves ayant le même score :🎜rrreee🎜Sortie:🎜rrreee🎜🎜Conclusion🎜🎜🎜Les méthodes répertoriées ci-dessus peuvent réaliser un tri stable des tableaux PHP afin que l'ordre des éléments égaux soit maintenu. 🎜

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