Tri rapide du tableau PHP par rapport au tri par fusion

WBOY
Libérer: 2024-04-26 12:45:02
original
1097 Les gens l'ont consulté

Le tri rapide est un algorithme récursif qui divise le tableau en éléments plus petits et en éléments plus grands et les trie de manière récursive, tandis que le tri par fusion divise récursivement le tableau en tableaux plus petits, trie chaque petit tableau, puis le fusionne à nouveau dans le tableau d'origine. Les codes implémentés par PHP sont : Tri rapide : divisez le tableau en éléments plus petits et plus grands que la valeur de base, puis triez chaque partie de manière récursive. Tri par fusion : divisez récursivement un tableau en tableaux plus petits, triez chaque tableau plus petit, puis fusionnez les petits tableaux triés dans le tableau d'origine.

PHP 数组快排 vs. 归并排序

Tri rapide de tableau PHP vs tri par fusion

Qu'est-ce que le tri rapide et le tri par fusion ?

Le tri rapide et le tri par fusion sont deux algorithmes courants utilisés pour trier les tableaux.

  • Tri rapide : Divisez le tableau en deux parties, l'une contenant des éléments plus petits et l'autre contenant des éléments plus grands, puis triez chaque partie de manière récursive.
  • Tri par fusion : Divisez le tableau de manière récursive en tableaux plus petits, triez chaque tableau plus petit, puis fusionnez les tableaux plus petits triés dans le tableau d'origine.

Implémentation du code 是 Ce qui suit est une fonction de tri de décharge et de fusion rapide implémentée avec PHP :

Élimination rapide :

function quickSort($arr) {
    if (count($arr) <= 1) {
        return $arr;
    }
    $pivot = $arr[0];
    $left = [];
    $right = [];
    for ($i = 1; $i < count($arr); $i++) {
        if ($arr[$i] < $pivot) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }
    return array_merge(quickSort($left), [$pivot], quickSort($right));
}
Copier après la connexion
E

Tri par fusion :

function mergeSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    $mid = floor($length / 2);
    $left = array_slice($arr, 0, $mid);
    $right = array_slice($arr, $mid);
    return merge(mergeSort($left), mergeSort($right));
}

function merge($left, $right) {
    $result = [];
    $lIndex = $rIndex = 0;
    while ($lIndex < count($left) && $rIndex < count($right)) {
        if ($left[$lIndex] < $right[$rIndex]) {
            $result[] = $left[$lIndex++];
        } else {
            $result[] = $right[$rIndex++];
        }
    }
    while ($lIndex < count($left)) {
        $result[] = $left[$lIndex++];
    }
    while ($rIndex < count($right)) {
        $result[] = $right[$rIndex++];
    }
    return $result;
}
Copier après la connexion

cas de combat réel

Considération d'un Ar désordonné rayon d'entiers .

Utilisation du tri rapide :

$sortedArray = quickSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r($sortedArray);
Copier après la connexion
[5, 2, 8, 3, 1, 9, 4, 7, 6]Sortie :

[1, 2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion
Copier après la connexion

Utilisation du tri par fusion :

$sortedArray = mergeSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r($sortedArray);
Copier après la connexion

Sortie :

[1, 2, 3, 4, 5, 6, 7, 8, 9]
Copier après la connexion
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!