


[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
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; } } }
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); }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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

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.

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

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.
