Sorte de peigne

Dans le de l'informatique, la sorte de peigne de est un algorithme de tri relativement simpliste conçu par le Stephen la boîte de dentelle de Richard de et de , qui l'a décrit en magazine de byte de en avril 1991. La sorte de peigne s'améliore sur le tri par échange de paire de clés , et les rivaux dans des algorithmes plus complexes de vitesse comme le Quicksort . L'idée fondamentale est d'éliminer les tortues de , ou les petites valeurs près de la fin de la liste, depuis dans un tri par échange de paire de clés ces lents le tri vers le bas énormément. (les lapins , grandes valeurs de autour du commencement de la liste, ne posent pas un problème dans le tri par échange de paire de clés.)

Dans le tri par échange de paire de clés, quand deux éléments quelconques sont comparés, ils ont toujours un espace (distance de entre eux) de 1. L'idée fondamentale de la sorte de peigne est que l'espace peut être beaucoup plus d'un. (le Shell assortissent est également basé sur cette idée, mais c'est une modification de la sorte d'insertion plutôt que le tri par échange de paire de clés.)

L'espace commence comme la longueur de la liste étant assortie divisée par le facteur (généralement 1.3 de rétrécissement de ; voir ci-dessous), et la liste est assorti avec cette valeur (arrondie vers le bas à un nombre entier si nécessaire) pour l'espace. Alors l'espace est divisé par le facteur de rétrécissement encore, la liste est assortie avec ce nouvel espace, et les répétitions de processus jusqu'à ce que l'espace soit 1. en ce moment, sorte de peigne continue d'employer un espace de 1 jusqu'à ce que la liste soit entièrement assortie. L'étape finale de la sorte est ainsi équivalent à un tri par échange de paire de clés, mais à cette heure la plupart des tortues ont été traitées, ainsi un tri par échange de paire de clés sera efficace.

Facteur de rétrécissement

Le facteur de rétrécissement a un grand effet sur l'efficacité de la sorte de peigne. Dans l'article original, les auteurs ont proposé 1.3 après essai de quelques listes aléatoires et conclusion de elles pour être généralement les plus efficaces. Une valeur trop petite ralentit l'algorithme vers le bas parce que plus de comparaisons doivent être faites, tandis qu'une valeur trop grande peut ne pas tuer assez de tortues pour être pratique.

Texte décrit amélioration pour peigner sorte using bas valeur 1/() de 1 \ frac {1} {e^ \ varphi} \ approximativement 1.247330950103979 comme le facteur de rétrécissement. Il contient également une exécution de pseudo-code avec une table prédéfinie d'espace.

Combsort11

Avec un facteur de rétrécissement autour de 1.3, il y a seulement trois manières possibles pour la liste de lacunes de finir : (9, 6, 4, 3, 2, 1), (10, 7, 5, 3, 2, 1), ou (11, 8, 6, 4, 3, 2, 1). Seulement le bout de ces fins tue toutes les tortues avant que l'espace devienne 1. Par conséquent, des améliorations significatives de vitesse peuvent être apportées si l'espace est placé à 11 toutes les fois qu'il deviendrait autrement 9 ou 10. Cette variation s'appelle le Combsort11.

Si des ordres commençant par 9 ou 10 étaient employés, le passage final avec un espace de 1 est moins pour assortir complètement les données, rendant nécessaire un autre passage avec un espace de 1. Les données sont assorties quand aucun échange n'a été fait pendant un passage avec l'espace de = 1.

Exemple de pseudo-code de combsort11

fonction combsort11 (rangée de entrée) espace : = style=" couleur : green" ; espace size de >//initialize la boucle de jusqu'au du <= 1 d'espace de et au permute = 0 style=" //update la valeur d'espace pour un prochain comb si espace de > 1 espace : = espace/1.3 si espace de = 10 ou espace de = 9 espace : = 11 extrémité de si extrémité de si
i : = 0 échanges : = 0 style=" //see Bubblesort pour un explanation
style=" //a choisissent le " ; comb" ; au-dessus de l'entrée list boucle de jusqu'à i + style=" du >= array.size de //see Shellsort pour idea semblable si rangée de > rangée échange (rangée, rangée) de échanges : = 1 fixup d'Arithmetic_overflow de // extrémité de si i : = I + 1 boucle d'extrémité de
boucle d'extrémité de fonction de fin de

Voir également

Le tri par échange de paire de clés , un algorithme généralement plus lent, est la base de la sorte de peigne.
La sorte de cocktail de , ou le tri par échange de paire de clés bi-directionnel, est une variation du tri par échange de paire de clés qui aborde également le problème des tortues.
Random links:Cuvette de Gator | Schalksmühle | Bois de Robert | Netherley, Liverpool | Sandman (album) | Clase_del_peine