Maison  >  Article  >  développement back-end  >  Comment trier un tableau en PHP sans utiliser de fonctions

Comment trier un tableau en PHP sans utiliser de fonctions

PHPz
PHPzoriginal
2023-04-27 09:03:10643parcourir

PHP est un langage de programmation largement utilisé avec de nombreuses fonctions puissantes pour faciliter le tri des tableaux. Cependant, dans certains cas, nous devrons trier le tableau sans utiliser de fonction. Dans cet article, nous verrons comment trier un tableau en PHP sans utiliser de fonctions.

1. Méthode de tri des bulles

Le tri des bulles est un algorithme de tri simple. Son opération de base consiste à comparer les éléments adjacents et à les échanger s'ils sont dans le mauvais ordre. Pour un tableau de longueur n, au plus n-1 tours d'opérations de comparaison et d'échange sont effectués. Après chaque tour, les éléments de queue de la zone non ordonnée deviendront les éléments de tête de la zone ordonnée.

Ce qui suit est le code pour implémenter le tri à bulles en utilisant PHP en utilisant l'ordre croissant comme exemple :

function bubbleSort(&$arr){
    $len = count($arr); //获取数组长度
    for($i=0;$i<$len-1;$i++){ //需要比较n-1轮
        for($j=0;$j<$len-$i-1;$j++){ //每一轮需要比较n-i-1次
            if($arr[$j]>$arr[$j+1]){ //如果前一个元素大于后一个元素,交换位置
                $tmp = $arr[$j+1];
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
}

La complexité temporelle du code ci-dessus est O(n^2), ce qui n'est pas l'algorithme de tri optimal. Mais dans certains cas, l’implémentation du code du tri à bulles est relativement simple et peut être utilisée pour trier de petits tableaux.

2. Méthode de tri par sélection

Le tri par sélection est un algorithme de tri simple. Son opération de base consiste à sélectionner le plus petit (ou le plus grand) élément de la séquence à trier et à le placer à la fin de la séquence triée. Pour un tableau de longueur n, n-1 tours d'opérations de comparaison et d'échange sont nécessaires. Après chaque tour de comparaison, les éléments de tête de la zone non ordonnée deviendront les éléments de queue de la zone ordonnée.

Ce qui suit est le code pour implémenter le tri par sélection à l'aide de PHP, en prenant l'ordre croissant comme exemple :

function selectSort(&$arr){
    $len = count($arr);//获取数组长度
    for($i=0;$i<$len-1;$i++){//需要比较n-1轮
        $minIndex=$i;//用来存储最小元素的下标
        for($j=$i+1;$j<$len;$j++){
            if($arr[$j]<$arr[$minIndex]){//如果有小于当前最小值的元素,更新minIndex
                $minIndex=$j;
            }
        }
        //将最小元素和无序区域的头部元素交换位置
        $tmp = $arr[$minIndex];
        $arr[$minIndex] = $arr[$i];
        $arr[$i] = $tmp;
    }
}

La complexité temporelle du code ci-dessus est O(n^2), ce qui n'est pas l'algorithme de tri optimal. Cependant, la méthode de tri par sélection est simple à mettre en œuvre et à comprendre, et peut être utilisée pour trier de petits tableaux.

3. Méthode de tri par insertion

Le tri par insertion est un algorithme de tri simple. Son opération de base consiste à insérer une donnée dans une séquence ordonnée déjà triée. Pour un tableau de longueur n, n-1 tours d'opérations de comparaison et de déplacement sont nécessaires. Après chaque tour de comparaison, les éléments de tête de la zone non ordonnée deviendront les éléments de queue de la zone ordonnée.

Ce qui suit est le code pour implémenter le tri par insertion en utilisant PHP, en prenant l'ordre croissant comme exemple :

function insertSort(&$arr){
    $len = count($arr);//获取数组长度
    for($i=1;$i<$len;$i++){//需要将n-1个元素插入到有序区域
        $tmp = $arr[$i];//用一个临时变量存储待插入的元素
        for($j=$i-1;$j>=0;$j--){//将tmp插入到合适的位置
            if($tmp<$arr[$j]){
                $arr[$j+1]=$arr[$j];//将大于tmp的元素向后移动一位
            }else{
                break;//找到了合适的位置,退出循环
            }
        }
        $arr[$j+1]=$tmp;//将tmp插入到合适的位置
    }
}

La complexité temporelle du code ci-dessus est O(n^2), ce qui n'est pas l'algorithme optimal. Cependant, la méthode de tri par insertion est simple à mettre en œuvre et peut être utilisée pour trier de petits tableaux et des tableaux partiellement ordonnés.

4. Méthode de tri rapide

Le tri rapide est un algorithme de tri efficace. Son idée de base est de diviser le tableau en deux sous-séquences via un seul tri. Les éléments de la sous-séquence de gauche sont plus petits que l'élément de référence et les éléments de la sous-séquence de gauche. la sous-séquence de droite est plus petite que l'élément de référence et est toutes deux supérieure à l'élément de base, puis les sous-séquences de gauche et de droite sont triées de manière récursive, et enfin les deux sous-séquences ordonnées sont fusionnées en une seule séquence ordonnée. La complexité temporelle du tri rapide est O(nlogn).

Ce qui suit est le code pour implémenter le tri rapide à l'aide de PHP en utilisant l'ordre croissant comme exemple :

function quickSort(&$arr,$left,$right){
    if($left<$right){
        $i=$left;$j=$right;//选择一个基准元素,初始化左右指针
        $pivot=$arr[$i];//将基准元素存储到临时变量pivot
        while($i<$j){
            while($i<$j && $arr[$j]>=$pivot){//逆序查找比基准元素小的元素
                $j--;
            }
            if($i<$j){
                $arr[$i++]=$arr[$j];
            }
            while($i<$j && $arr[$i]<=$pivot){//顺序查找比基准元素大的元素
                $i++;
            }
            if($i<$j){
                $arr[$j--]=$arr[$i];
            }
        }
        $arr[$i]=$pivot;//将基准元素插入到左右子序列的交界处
        quickSort($arr,$left,$i-1);//对左子序列递归排序
        quickSort($arr,$i+1,$right);//对右子序列递归排序
    }
}

La complexité temporelle du code ci-dessus est O(nlogn), qui est un meilleur algorithme de tri. Le processus de mise en œuvre du tri rapide est plus compliqué, mais ses performances sont les meilleures et peuvent être utilisées pour trier des tableaux de différentes tailles.

Résumé :

Ce qui précède présente quatre méthodes pour trier les tableaux sans utiliser les fonctions PHP : le tri par bulles, le tri par sélection, le tri par insertion et le tri rapide. Dans les applications pratiques, nous pouvons choisir un algorithme de tri approprié en fonction de la taille du tableau et des exigences de tri. Il convient de noter que même si ces algorithmes ne s'appuient pas sur les fonctions intégrées de PHP, des problèmes tels que le temps d'exécution et l'utilisation de la mémoire doivent être pris en compte lors de leur utilisation réelle.

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