Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> python Programming >> Content

    Rekursiv Merge Sortera i Python

    Sortering är traditionellt en svår uppgift i datavetenskap . Välja en sortering algoritm som är effektiv och snabb kan vara svårt . Ofta innebär effektiv algoritm val kunskap av data sorteras, och specialiserade typer brukar fungera mycket bättre än generaliserade sorteringsalgoritmer . Men vissa sorter , som " merge sort , " kan fungera i allmänna situationer genom att bryta ner satser och sortering mindre bitar rekursivt . Listan

    En sammanfogning sort är en " söndra och härska " algoritm , i att det tar delar av listorna och ständigt bryter dem i halvor tills man når enstaka delar av listan , som sedan samman i ordning. Till exempel börja med en numerisk lista som

    5 6 2 4 1 9 8 3 7

    Sortera en lista som denna med en merge sort kräver halvera listan storlek tills varje bastal existerar ensam. Sedan kan sortera jämföra siffrorna och sätta ihop dem i rätt ordning (lägsta till högsta , i det här fallet ) .
    Merge Method

    merge metoden är okomplicerad :

    def merge ( första , andra ) katalog

    med två listor , kommer metoden slå ihop dem genom att starta i början av varje lista . Det lägger sedan nästa minsta varje lista till en ny lista . Resultatet är en sorterad lista . ( Kom ihåg att ordentligt fliken Infoga tomt utrymme efter " medan " och " if /else " uttalanden . ) :

    Medan jag < len ( första ) och j < len ( andra ) :

    om första [ i] < = sekund [ j ] :

    new_list.append ( första [ i] ) katalog

    i = i + 1

    annat :

    new_list.append ( andra [ j ] ) katalog

    j = j + 1 }

    Slutligen, efter en lista ändar , är de återstående värdena placeras i den nya listan :

    new_list + = första [ I: ]

    new_list + = sekund [ j: ]

    retur end_list Addera ditt Merge Sortera villkor

    själva merge sort driver huvudsakliga sorteringsalgoritm . Det finns två huvudsakliga funktionella delar : den villkorliga aspekten som stoppar rekursion när listorna delas och den faktiska rekursion som halverar listorna . Den halt villkoret kommer först :

    def mergesort ( lista ) :

    If Len ( lista ) == 1 :

    retur lista

    Detta säkerställer att när en sub lista når endast ett element , som element returneras för att den ska slås ihop med de andra numren . Addera Merge Sort rekursion

    andra halvan av sorteringen är rekursion . Efter " om " uttalande /villkorligt , enligt följande :

    annat :

    mitten = len ( lista ) /2 Review

    start = mergesort ( lista [ mitten : ] )

    slut = mergesort ( lista [ : mitten ] ) katalog

    retur merge ( start , slut ) katalog

    grund av rekursion , efter att listorna är uppdelade i enskilda element , algoritmen tillbaka spårar upp till den senast utförda metoden . Så , när meddelandet " avkastning merge ( start , slut) " utför , återgår algoritmen ett sammanslaget , sorterad lista på två tidigare applicerade sorterat , förteckningar över mindre storlek .

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man testar en IP- Range i Python
    ·Hur man skickar en funktion som ett argument i Python
    ·Hur Extrahera processoranvändning Med Python
    ·Hur Index en Python lista
    ·Hur Platta listor i Python
    ·Hur Lyssna efter paket på Python
    ·Så att köra Python -filer i Python Shell
    ·Hur sortera Last Names Alfabetiskt i Python
    ·Ta reda på om en sträng är en Palindrom i Python
    ·Hur Sök och ersätt med Python
    Utvalda artiklarna
    ·Hur får Visual Basic 2008
    ·Hur man gör radbrytningar i PHP
    ·Hur man skapar en ram med användning av HTML -programm…
    ·Hur man ladda ner och lagra media med iPhone SDK
    ·Hur Trunkera text i PHP
    ·Hur man kör FFmpeg i bakgrunden med PHP
    ·Hur göra en avdelning blogginlägg till en H1-tagg fö…
    ·Lägga till kontroller till en aspx-sida
    ·Hur man skriver algoritmer för nybörjare
    ·Hur du använder käftar med Microsoft Visual Basic
    Copyright © Dator Kunskap http://www.dator.xyz