Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
merge sort " rozdeľ a panuj " algoritmus , v tom , že sa časti zoznamov a neustále rozbije je do polovice až do dosiahnutia jednotlivých prvkov zo zoznamu , ktoré sú potom zlúčené do poradí . Napríklad , začať s číselným zoznamom ako
5 6 2 4 1 9 8 3 7
Triedenie zoznamu ako to s zlučovacie druhu bude vyžadovať znížiť veľkosť zoznamu , kým každý základné číslo existuje sám . Potom , triedenie môžete porovnať čísla a dať ich dohromady v správnom poradí ( od najnižšej po najvyššiu , v tomto prípade ) .
Metóda Merge
metóda zlúčenie je jednoduché :
def zlúčenie ( prvý, druhý )
Užívanie dva zoznamy , bude metóda spojiť ich dohromady tým , že začína na začiatku každého zoznamu . To potom pripojí ďalší najmenšie množstvo každého zoznamu do nového zoznamu . Výsledkom je ďalej zoznam . ( Nezabudnite správne vložiť kartu prázdne miesto po " , zatiaľ čo " a " if /else " vyhlásenie . ) :
Zároveň i < ľan ( prvý ) a j < ľan ( s ) :
ak prvý [ i ] < = druhý [ j ] :
new_list.append ( prvá [ i ] )
i = i + 1
inde :
new_list.append ( druhý [ j ] ) celým
j = j + 1 } celým
Nakoniec , po skončení jeden list , zostávajúce hodnoty sú umiestnené v novom zozname :
new_list + = prvá [ i : ]
new_list + = druhý [ j : ]
vrátiť end_list
Merge Sort podmienky
skutočná korešpondencie druh poháňa hlavné triediace algoritmus . Tam sú dve hlavné funkčné časti : podmienené aspekt , ktorý zastavuje rekurziu , akonáhle zoznamy sú rozdelené a aktuálne rekurziu , ktorá rozpoľujú zoznamy . Stav zastavenia je na prvom mieste :
def mergesort ( zoznam ) :
ak ľan ( zoznam ) == 1 :
vrátiť zoznam
Tým je zaistené , že keď čiastkové zoznam dosahuje iba jeden prvok , tento prvok sa vráti , aby pre to , aby sa spojil s ostatnými číslami .
Merge Sort Rekurzia
Druhá polovica druh je rekurzia . Po " keby " vyhlásenie /podmienená , takto :
inde :
stredná = ľan ( zoznam ) /2
start = mergesort ( zoznam [ middle : ] )
end = mergesort ( zoznam [ : stredná ] )
návrat merge ( začiatok , koniec )
Vzhľadom k tomu , rekurzia , po zoznamy sú rozdelené do jednotlivých prvkov , algoritmus späť sleduje až do posledného vykonaného metódou . Takže v čase, keď vyhlásenie " návrat merge ( začiatok , koniec ) " spustený , vráti algoritmus zlúčenie radené zoznam dvoch predtým zlúčené , radené zoznamy menšej veľkosti .