Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> python Programming >> Content
Recursieve Merge Sort in Python
Sorting is traditioneel een moeilijke taak in de informatica . Het kiezen van een sorteer-algoritme dat efficiënt en snel kan moeilijk zijn . Vaak , efficiënt algoritme keuze impliceert kennis van de gegevens die worden gesorteerd , en gespecialiseerde soorten werken meestal veel beter dan algemene sorteren algoritmen . Echter , bepaalde soorten , zoals de " merge sort , " kan in algemene situaties werken door het afbreken van sets en sorteren van kleinere stukken recursief . De Lijst

Een merge sort is een " verdeel en heers " -algoritme , dat het duurt gedeelten van de lijsten en breekt ze continu in twee helften tot het bereiken van enkele elementen van de lijst , die vervolgens worden samengevoegd in orde . Bijvoorbeeld , te beginnen met een numerieke lijst zoals

5 6 2 4 1 9 8 3 7

sorteren van een lijst als deze met een merge sort zal vereisen halvering herhaaldelijk de lijst grootte tot elkaar stamnummer bestaat alleen. Vervolgens kan het soort de nummers vergelijken en zet ze samen in de juiste volgorde (oplopend , in dit geval ) .
De Merge Method

Het samenvoegen methode is ongecompliceerd :

def merge ( eerste, tweede ) op Twitter

nemen twee lijsten , zal de methode ze samensmelten door te beginnen bij het begin van elke lijst . Vervolgens voegt de volgende minste hoeveelheid van elke lijst in een nieuwe lijst . Het resultaat is een gesorteerde lijst . ( Vergeet niet om goed te voegen tabblad witruimte na de " terwijl" en " if /else " verklaringen . ) :

Terwijl i < len ( eerste ) en j < len ( tweede ) :

als eerste [ i ] < = tweede [ j ] :

new_list.append
( eerste [ i ] ) op Twitter

i = i + 1

anders : < br >

new_list.append ( tweede [ j ] ) op Twitter

j = j + 1 }

Eindelijk, na een lijst eindigt , de overige waarden worden geplaatst in de nieuwe lijst : < br >

new_list + = eerste [ i : ]

new_list + = tweede [ j : ]

terugkeer end_list

Merge Sort voorwaarden

de werkelijke merge sort drijft de belangrijkste sorteeralgoritme . Er zijn twee belangrijke functionele delen : de voorwaardelijke aspect dat de recursie als de lijsten worden onderverdeeld en de werkelijke recursie dat de lijsten helften stopt . De halt aandoening komt eerst :

def mergesort
( lijst) :

If Len ( lijst) == 1 :

terugkeer lijst


Dit zorgt ervoor dat wanneer een sub- lijst de tweede helft van bereikt slechts een element , dat element wordt geretourneerd , zodat zij te worden samengevoegd met de andere nummers .
Merge Sort Recursion

de soort is de recursie . Naar aanleiding van de " if" statement /voorwaardelijk , als volgt :

anders :

midden = len ( lijst ) /2

start = mergesort ( lijst [ midden : ] )

end
= mergesort ( lijst [ : midden] )

return merge
( begin , einde ) op Twitter

Vanwege recursie , nadat de lijsten worden onderverdeeld in afzonderlijke elementen , het algoritme back -beslag tot de laatst uitgevoerde methode . Dus tegen de tijd dat de uitspraak " return merge ( begin , einde ) " uitvoert , het algoritme geeft een gefuseerde , gesorteerde lijst van de twee eerder samengevoegd , gesorteerd lijsten van kleinere omvang .
< br >

Previous: Next:
  python Programming
·Hoe een bestand te openen in P…
·Hoe kan ik een array van Strin…
·Hoe om te achterhalen welke ve…
·Wat Taal Is de Python Interpre…
·Hoe te Tekstbreedte Bereken Me…
·How to Get Rid van een nieuwe …
·An Introduction to Python 3 
·Hoe te beginnen Up the Python …
·Hoe je bij benadering de Fouri…
  Related Articles
Hoe te sorteren in Visual Basic 
Hoe Word- documenten samenvoegen in VBA 
Hoe te Arrays Numeriek sorteren in Visua…
Hoe gegevens in Visual Basic sorteren 
Hoe te Arrays sorteren in Visual Basic 
Hoe u met Visual Basic Access 
Hoe je twee PDF's in Acrobat 9 samenvoeg…
Hoe te Sorteervolgorde wijzigen op een v…
Visual Basic Sort Method 
  Programmering Articles
·De beste PHP Frames 
·Hoe te SQLite bestanden te lezen om Pyth…
·Hoe te Graphics Schrijven op Shell Scrip…
·Hoe Bewerken in GridView 
·Een Java Client Server Tutorial 
·Hoe maak je een Java Website Inloggen 
·Hoe de lijst Input Stroom op Koppeling C…
·Hoe te converteren HTML naar tekst PHP 
·Hoe maak je een wachtwoord in Visual Bas…
Copyright © Computer Kennis http://www.nldit.com