/ / Tri rapide comme méthode de programmation

Tri rapide comme méthode de programmation

En 1960, K.A. Hoare a développé la méthode la plus connue pour trier rapidement les informations. Aujourd'hui, il est largement utilisé en programmation, car il a beaucoup de propriétés positives: il peut être utilisé pour des cas généraux, nécessite une petite augmentation de mémoire supplémentaire, est compatible avec différents types de listes et est pratique pour la mise en œuvre. Mais le tri rapide présente également des inconvénients: il fait beaucoup d'erreurs lorsqu'il est utilisé au travail et est quelque peu instable.

Однако это наиболее изученная версия.Après l’apparition des premiers calculs de Hoare, beaucoup ont commencé à l’étudier en profondeur. Une vaste base de données a été créée sur les problèmes théoriques liés à la recherche du temps consacré au travail, étayée par des données empiriques. Il y avait de réelles propositions pour améliorer l'algorithme de base et augmenter la vitesse de travail.

Quicksort est très courant et peut êtrese rencontrer partout. Sur cette base, la méthode TList.Sort est implémentée, qui existe dans toutes les versions (sauf 1) de Delphi, la fonction de la bibliothèque du temps passé à l'exécution, qsort en C ++.

Le principe de fonctionnement de base peut être formulé comme"diviser pour régner". La liste est divisée en deux groupes et le tri est effectué pour chaque pièce séparément. Il s'ensuit qu'une plus grande attention doit être accordée au processus de séparation, au cours duquel se produit ce qui suit: l'élément de base est déterminé et la liste entière est réorganisée par rapport à lui. À gauche, un groupe de candidats est construit, dont les valeurs sont inférieures, à droite, tous les autres sont transférés. Il s'avère que l'élément principal de la liste triée est à sa juste place. L'étape suivante consiste à appeler une fonction de tri récursif pour les deux côtés des éléments par rapport à l'élément de base. Le processus de travail se termine uniquement lorsque la liste ne contient qu'un seul élément, c'est-à-dire qu'elle sera triée. Ainsi, pour maîtriser une telle fonction de programmation comme tri rapide, il faut connaître le fonctionnement des algorithmes de niveau inférieur: a) le choix de l'élément de base; b) le réarrangement le plus efficace de la liste pour obtenir deux ensembles avec des valeurs inférieures et supérieures.

Faisons connaissance avec les principes du premier. Lors du choix d'un élément de base, idéalement, celui du milieu doit être sélectionné dans la liste. Ensuite, une fois cassé, il sera divisé en deux moitiés égales. Il est très difficile de calculer la valeur moyenne dans une liste, donc même le tri le plus rapide contourne ce calcul. Mais choisir l'élément principal avec la valeur maximale ou minimale n'est pas non plus la meilleure option. Dans le cas d'une telle définition, l'une des listes créées est garantie vide et la seconde déborde. D'où la conclusion que comme élément de base, il faut en choisir un qui est plus proche de la moyenne, mais plus éloigné du maximum et du minimum.

Après avoir fait votre choix, vous pouvezaller au travail de l'algorithme de partitionnement. Ce sont les soi-disant boucles de tri rapide internes. Tout est construit sur deux indices rapides: le premier passera par les éléments de gauche à droite, le second, au contraire, de droite à gauche. L'opération d'exécution commence à droite: l'index parcourt la liste et compare toutes les valeurs avec la principale. Le cycle est considéré comme terminé si un élément est trouvé inférieur ou égal à celui de base. Autrement dit, une comparaison a lieu et la valeur d'index diminue. Sur le côté gauche, le travail est terminé lorsqu'une valeur supérieure ou égale est trouvée. Et ici, la valeur augmente en comparaison.

A ce stade de l'algorithme de partitionnement,qui contient quicksort, deux situations peuvent survenir. La première est que l'index de gauche sera inférieur à celui de droite. Cela indique une erreur, c'est-à-dire que les éléments pointés sont dans le mauvais ordre dans la liste. La solution est de changer de place. La deuxième situation est celle où les deux colonnes sont égales ou croisées. Cela indique une division réussie de la liste, c'est-à-dire que le travail peut être considéré comme terminé.

J'ai aimé:
0
Messages populaires
Développement spirituel
Nourriture
yup