Tri des listes de données est un problème qui a vexé les programmeurs depuis le début de la programmation informatique . Tri toute liste de données peut finir comme une tâche de mémoire et beaucoup de temps. Pour cette raison , les différentes méthodes de tri ont été inventés pour minimiser le défi et de l'effort de tri . Une méthode consiste à fusionner le tri . Elle subdivise une liste récursive en éléments singuliers et recombine la liste sous forme triée. N'importe quel langage de programmation qui supporte la récursivité , tels que Python, peut mettre en place un tri par fusion . Choses que vous devez interpréteur Python avec l'environnement de développement interactif Voir Plus Instructions 1 définir la fonction " mergesort " . Cette fonction de base s'appelle récursivement , diviser la taille de la liste de moitié à chaque appel . Une fois la fonction mergesort frappe une liste avec un élément, la récursivité s'arrête et le rendement de l'élément. Comme les déroule de récurrence mergesort , chaque petite liste est fusionné ensemble dans l'ordre. Cet exemple affiche une fonction de mergesort de base qui prend une liste en argument : >>> def mergesort ( li ) : . . . if len ( li ) < 2: . . . retourner li . . . mid = len ( li ) /2 . . . premier = mergesort ( li [ : mi ] ) . . . last = mergesort ( li [ mi : ] ) . . . retourner fusionner ( first, last) 2 Mettre en place la méthode de fusion. Cette fonction servira de la méthode de tri : elle renvoie une liste triée des éléments. La méthode de fusion prend deux listes déjà triées. Il définit ensuite une liste interne " triés " qui représentera les listes d'arguments triés combinés. La méthode de fusion accomplit cette mission en prenant le plus petit élément et en l'insérant dans une nouvelle liste " classifiées " . Une fois que l'une des listes extrémités , l'autre liste est inséré dans son intégralité >>> def fusion ( x , y) : . . . . sorted = [] 3 fusionner les listes dans la méthode de fusion. La boucle "while" dans l'exemple compare chaque élément de la liste en question , en prenant le plus petit élément et en l'insérant dans une nouvelle liste " classifiées " . Une fois que l'une des listes se termine, l'autre liste est insérée dans son intégralité, et la nouvelle liste triée est renvoyée: . . . i , j = 0, 0 . . . tandis que i < len ( x ) et j < len ( y) : . . . si x [ i ] < = y [j] : . . . sorted.append ( x [i]) . . . i + = 1 . . . autre : . . . sorted.append ( y [ j]) . . . j + = 1 . . . triés + = x [ I: ] . . . triés + = y [: j] . . . retourner triés
|