algorithmes Python

Les algorithmes sont des instructions bien définies utilisées pour résoudre des problèmes. Imaginez que vous habitiez au deuxième étage d’un immeuble et que vous deviez vous donner des instructions pour vérifier votre courrier. Votre algorithme ressemblerait à ceci :

Remarquez que nous devions être très bien définis dans nos instructions. Nous ne pouvons pas sortir de l’appartement sans ouvrir la porte. L’omission d’une instruction peut empêcher les développeurs de résoudre un problème.

Il existe plusieurs types d’algorithmes différents en python. Certains d’entre eux peuvent aider à résoudre les problèmes plus rapidement que d’autres. Nous mesurons cela à l’aide de la notation Big-O.

Dans cet article, nous plongeons dans différents types d’algorithmes de tri tout en mesurant leur efficacité, ou notation Big-O.

Algorithmes de tri Python

Les algorithmes de tri sont des algorithmes de blocs de construction sur lesquels de nombreux autres algorithmes peuvent s’appuyer. Les algorithmes de tri sont utilisés pour résoudre des problèmes tels que la recherche d’un ou plusieurs éléments sur une liste, la sélection d’un ou plusieurs éléments dans une liste et les distributions. Résoudre ces problèmes est beaucoup plus rapide gr√¢ce au tri.

Imaginez que vous ayez un dressing qui n’est pas seulement organisé en termes de vêtements décontractés, de vêtements de sport et d’affaires, mais aussi de couleur coordonné. Dans quelle mesure serait-il plus rapide de trouver votre short de sport bleu dans la liste de votre placard par rapport à un placard non organisé ou non trié ?

Algorithme de tri intégré Python

Python possède un algorithme de tri intégré, sorted(), qui peut être utilisé pour les listes.

Tri à bulles

Le tri à bulles est l’algorithme de tri le plus simple, mais très lent, avec un Notation Big-O de O(n^2). Nous en apprendrons plus sur Big-O plus tard. Pour l’instant, parcourons la liste plusieurs fois, en comparant les éléments un par un et en les échangeant en conséquence. Prenez l’exemple ci-dessous.

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Remarquez à chaque fois que nous avons pour parcourir la liste, la section de la liste que nous devons parcourir devient plus petite car les éléments à droite (en orange) ont déjà été triés. Vous trouverez ci-dessous une explication de ce qui se passe avec notre visualisation de tri à bulles ci-dessus.

Le code pour le tri à bulles aimerait quelque chose comme l’exemple de code ci-dessous :

Tri par insertion

Si vous avez déjà joué au poker, vous avez probablement utilisé cette méthode de tri. Avec le tri par insertion, vous commenceriez avec une carte en main, choisiriez la carte suivante au hasard, l’inséreriez dans le bon ordre de tri et recommenceriez.

L’algorithme de tri par insertion s’exécute dans le temps O(n), le meilleur des cas et le pire des cas O(n^2).

Upip8gpI1oGSFaGZbPoI2Xe63l7EcnxPimhRpPPaG5hoDs5RUdqZEIfb7YGWhFywKLkwlDVQQJvgx3vZadJATJAOMBwNYRqumzXGTMnfN3W83iUAuFc2 PDsmnyNKm9k4y9 KdVm

Voici une explication de la visualisation de l’algorithme de tri d’insertion ci-dessus. < br>

Vous trouverez ci-dessous un exemple de code de l’algorithme de tri par insertion.< br>

Trier par fusion

Le tri par fusion a une approche diviser pour régner en matière de tri, et est un algorithme de tri récursif, différent de ceux ci-dessus qui sont itératifs. Pour comprendre le tri par fusion, nous devons d’abord comprendre la récursivité.

Les fonctions récursives sont des fonctions qui s’appellent elles-mêmes, mais ont un cas de base vers lequel travailler pour éviter les boucles infinies. Vous trouverez ci-dessous un exemple de code d’une fonction récursive de base.

Dans le tri par fusion, nous commençons à trier paire par paire jusqu’à ce que tout soit en ordre et que nous puissions fusionner. Prenez la visualisation ci-dessous.

Étape 1

Iz8kE8XQv58nWTQ63VsFF UmZ5rdnyRTQ4Gv8B98b7N4tDs 2ji4m4 JTUuRrsMGDTfndl1uT6pUHZa0Ri4UfUwGGsOLU7RpMouCb3JWQGiqPSUkbYNVpa4CHefrcRxqOVcQ8V5Ta0Ri4UfUwGGsOLU7RpMouCb3JWQGiqPSUkbYNVpa4CHEfrcRxqOVcQ8V5T les deux premiers</sup>, indexer sur les deux premiers</p>< wp-bloc-image ClAumSPmBvbVtepF 8xl IPl2Kh GHzpThog0jH40T0ba7 OJRHWDxCsl1p3xNfkByWpgnr20IOhF6q9EyzmBVUeLMKiL33k24PCT0l8G6g0VXiRTj62R9lg5UU ZsdpdaO5YqKL

Deuxièmement, nous commençons par comparer le premier index des deux premiers groupes, en triant au fur et à mesure, avant de repartir à droite.

Étape 3

 O39N9kbi 4KA4OUBQ4M6HejjQOnzglY K3wOg3ReCZrkn1W1gc90ctO7X6Rvz4elLifeTo9EmsNbSB8S4fzjsuJJK 2KAdjGOipd0jvr4TH6xuqnni9xFZbZNH5bAnb43EXRpdo

Enfin, nous passons à travers les indices de les deux groupes, en comparant et en triant les valeurs avant de se déplacer vers la droite.

Vous trouverez ci-dessous un exemple de code de tri par fusion.

Puisqu’il faut diviser puis conquérir avec merge sort, nous pouvons penser à sa complexité d’exécution comme O(log(n)) * O(n) ou O(n * log(n)). Pour plus d’informations sur la notation Big O, consultez les articles Career Karma, Big-O Notation Time et Espace de notation Big-O.