Table des matières
Idée de base :
Illustration :
Code :
Résumé :
Maison développement back-end tutoriel php [Interview PHP] Explication de deux algorithmes de tri simples qui doivent être demandés lors de l'entretien : le tri à bulles et le tri rapide

[Interview PHP] Explication de deux algorithmes de tri simples qui doivent être demandés lors de l'entretien : le tri à bulles et le tri rapide

Apr 17, 2019 pm 04:03 PM
php面试 tri à bulles 快速排序

De manière générale, face à des entretiens, nous n'avons aucun problème à répondre aux questions de l'entretien. Pour les développeurs PHP, en plus d’être familiers avec les projets qu’ils réalisent, ils doivent également comprendre les algorithmes de base. Partageons les algorithmes qui sont souvent demandés dans les entretiens PHP : le tri à bulles et le tri rapide.

Tri des bulles  : Tri par comparaison un à un

Idée de base :

Visitez à plusieurs reprises la colonne d'éléments pour être trié, comparez tour à tour deux éléments adjacents et échangez-les si leur ordre (par exemple du grand au petit) est erroné. Le travail des éléments en visite est répété jusqu'à ce qu'aucun élément adjacent ne doive être échangé, ce qui signifie que les éléments ont été triés.

Illustration :

1. en comparant respectivement à partir du deuxième élément. Si l'élément précédent est plus grand que l'élément suivant, échangez les deux éléments pour obtenir la valeur la plus grande. Continuez la comparaison vers l'arrière jusqu'à la fin de l'élément du tableau pour obtenir un bouillonnement (bulle une fois, la valeur maximale. du tableau "restant" actuel est obtenu et placé à la "fin" du tableau)

2. A partir de la deuxième fois, la comparaison commence toujours à partir du premier élément, mais seul le tableau est comparé. La longueur doit être de -1 position, et le nombre de comparaisons à chaque fois est de -1

3. Répétez la comparaison jusqu'à ce qu'il n'y ait finalement plus de chiffres à comparer

Code :

$arr = array(3,2,6,0,1,4,7);
        //因为排序需要每次将一个元素与数组的其他元素进行比较,所以需要两层循环来控制
        //外层循环控制冒泡次数
        //内存循环比较每次的大小,得到每次的最大值(泡)
 
        for($i = 0,$length = count($arr);$i < $length;$i++){
        
                 //内存循环
                 for($j = 0;$j < ($length - $i - 1);$j++){
                         //拿着j变量所对应的数组元素,与后面的元素进行比较
                         if($arr[$j] > $arr[$j + 1]){
                                  //交换位置
                                  $temp              = $arr[$j];
                                  $arr[$j]           = $arr[$j+1];
                                  $arr[$j+1]         = $temp;
                         }
                 }
        }
Copier après la connexion

Résumé :

La meilleure complexité temporelle du tri à bulles est O(n). Bien que ce ne soit pas l'algorithme optimal, c'est quelque chose que nous rencontrons souvent et que nous demanderons également lors des entretiens. il faut donc comprendre les principes de base, les comprendre, et être capable de les écrire

Tri rapide : Échanger l'espace contre le temps

Idée de base :

Divisez les données à trier en deux parties indépendantes grâce à un tri en un seul passage. Toutes les données d'une partie sont plus petites que toutes les données de l'autre partie, puis utilisez cette méthode pour trier les deux parties. de données. Le tri rapide est effectué séparément et l'ensemble du processus de tri peut être effectué de manière récursive, de sorte que l'ensemble des données devienne une séquence ordonnée.

Illustration :

Trouver n'importe quel élément du tableau actuel En standard, créez deux tableaux vides et parcourez l'ensemble du tableau. .élément, l'élément parcouru est plus petit que l'élément actuel, puis placez-le dans le tableau de gauche ; s'il est plus grand, placez-le dans un autre tableau

Idée récursive

1. point : Si deux Si les éléments d'un tableau sont supérieurs à 1, ils doivent être décomposés

2. Sortie récursive : lorsque l'élément du tableau devient 1

Code :

//待排序数组
        $arr = array(5,3,8,2,6,4,7);
        //函数实现快速排序
        function quick_sort($arr){
                 //判断参数是否是一个数组
                 if(!is_array($arr)) return false;
 
                 //递归出口:数组长度为1就直接返回数组
                 $length = count($arr);
                 if($length <= 1) return $arr;

                 //数组元素有多个
                 $left = $right = array();
                 //使用for循环进行遍历,把第一个元素当做比较的对象
                 for($i = 1;$i < $length;$i++){
                         //判断当前元素值的大小
                         if($arr[$i] < $arr[0]){
                                  //当前元素小于标准元素,放到左边数组
                                  $left[] = $arr[$i];
                         }else{
                                  $right[] = $arr[$i];
                         }
                 }
                 //递归调用
                 $left = quick_sort($left);
                 $right = quick_sort($right);
 
                 //将所有的结果合并
                 return array_merge($left,array($arr[0]),$right);
        }
Copier après la connexion

Résumé :

Le tri rapide est la méthode de tri la plus rapide parmi les méthodes de tri générales. Il est basé sur la récursivité et utilise l'espace pour le temps. Lors des entretiens généraux, il vous sera demandé de connaître les principes de base.

[Tutoriels associés : Tutoriel vidéo PHP]

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Apr 29, 2024 pm 06:45 PM

La technologie des pointeurs de fonction peut améliorer l'efficacité et la réutilisabilité du code, en particulier comme suit : Efficacité améliorée : l'utilisation de pointeurs de fonction peut réduire la répétition du code et optimiser le processus d'appel. Améliorer la réutilisabilité : les pointeurs de fonction permettent d'utiliser des fonctions générales pour traiter différentes données, améliorant ainsi la réutilisabilité du programme.

Structures de données et algorithmes Java : explication détaillée Structures de données et algorithmes Java : explication détaillée May 08, 2024 pm 10:12 PM

Les structures de données et les algorithmes sont à la base du développement Java. Cet article explore en profondeur les structures de données clés (telles que les tableaux, les listes chaînées, les arbres, etc.) et les algorithmes (tels que le tri, la recherche, les algorithmes graphiques, etc.) en Java. Ces structures sont illustrées par des exemples pratiques, notamment l'utilisation de tableaux pour stocker les scores, de listes chaînées pour gérer les listes de courses, de piles pour implémenter la récursion, de files d'attente pour synchroniser les threads, ainsi que d'arbres et de tables de hachage pour une recherche et une authentification rapides. Comprendre ces concepts vous permet d'écrire du code Java efficace et maintenable.

Comment implémenter un algorithme de tri à bulles en C# Comment implémenter un algorithme de tri à bulles en C# Sep 19, 2023 am 11:10 AM

Comment implémenter l'algorithme de tri à bulles en C# Le tri à bulles est un algorithme de tri simple mais efficace qui organise un tableau en comparant plusieurs fois les éléments adjacents et en échangeant leurs positions. Dans cet article, nous présenterons comment implémenter l'algorithme de tri à bulles à l'aide du langage C# et fournirons des exemples de code spécifiques. Tout d’abord, comprenons les principes de base du tri à bulles. L'algorithme part du premier élément du tableau et le compare avec l'élément suivant. Si l'élément actuel est plus grand que l'élément suivant, échangez leurs positions ; si l'élément actuel est plus petit que l'élément suivant, conservez-le.

Guide pour écrire un algorithme de tri personnalisé pour les tableaux PHP Guide pour écrire un algorithme de tri personnalisé pour les tableaux PHP Apr 27, 2024 pm 06:12 PM

Comment écrire un algorithme de tri de tableau PHP personnalisé ? Tri à bulles : trie un tableau en comparant et en échangeant des éléments adjacents. Tri par sélection : sélectionnez à chaque fois l'élément le plus petit ou le plus grand et échangez-le avec la position actuelle. Tri par insertion : insérez les éléments dans une pièce ordonnée un par un.

Comment implémenter un tri rapide à l'aide de Python Comment implémenter un tri rapide à l'aide de Python Dec 18, 2023 pm 03:37 PM

Comment implémenter le tri rapide en Python : 1. Définissez une fonction appelée quick_sort et utilisez la méthode récursive pour implémenter le tri rapide ; 2. Vérifiez la longueur du tableau si la longueur est inférieure ou égale à 1, renvoyez directement le tableau. Sinon, sélectionnez le tableau. Le premier élément est utilisé comme élément pivot (pivot), puis le tableau est divisé en deux sous-tableaux plus petits que l'élément pivot et plus grands que l'élément pivot. 3. Connectez les deux sous-tableaux ; et l'élément pivot pour former un tableau trié.

Conseils et précautions de tri rapide Java Conseils et précautions de tri rapide Java Feb 25, 2024 pm 10:24 PM

Maîtrisez les compétences et précautions clés du tri rapide Java (QuickSort) est un algorithme de tri couramment utilisé. Son idée principale est de diviser la séquence à trier en deux parties indépendantes en sélectionnant un élément de référence et tous les éléments en un seul. partie sont égales. est inférieur à l'élément de base et tous les éléments de l'autre partie sont supérieurs à l'élément de base, puis les deux parties sont triées de manière récursive et finalement une séquence ordonnée est obtenue. Bien que le tri rapide ait une complexité temporelle de O(nlogn) dans le cas moyen, il dégénère en O(nlogn) dans le pire des cas.

Analyse de la complexité de divers algorithmes de tri de tableaux PHP Analyse de la complexité de divers algorithmes de tri de tableaux PHP Apr 27, 2024 am 09:03 AM

Complexité de l'algorithme de tri des tableaux PHP : Tri à bulles : O(n^2) Tri rapide : O(nlogn) (moyenne) Tri par fusion : O(nlogn)

Algorithme de tri rapide implémenté en Java et son évaluation de l'efficacité Algorithme de tri rapide implémenté en Java et son évaluation de l'efficacité Feb 18, 2024 pm 03:38 PM

Implémentation Java du tri rapide et son analyse des performances Le tri rapide (QuickSort) est un algorithme de tri très couramment utilisé et efficace. Il s'agit d'une idée diviser pour mieux régner (Divide and Conquer). Cet algorithme divise un tableau en deux sous-tableaux, puis trie respectivement les deux sous-tableaux et transforme enfin le tableau entier en une séquence ordonnée. Le tri rapide affiche d'excellentes performances lors du traitement de données à grande échelle. Le tri rapide est implémenté de manière récursive. L'idée de base est la suivante : Choisir une base.

See all articles