Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> Python Programming >> Content
    Recursive Merge Sorter i Python
    Sortering er tradisjonelt en vanskelig oppgave i informatikk. Velge en sortering algoritme som er effektiv og fort kan være vanskelig. Ofte innebærer effektiv algoritme valg kunnskap om data blir sortert , og spesialiserte sorterer vanligvis fungerer mye bedre enn generaliserte sortering algoritmer . Men visse typer , som for eksempel " merge slags , " kan fungere på en generell situasjoner ved å bryte ned settene og sortering mindre biter rekursivt . The List

    merge sort er en " splitt og hersk " algoritmen , i at det tar deler av listene og kontinuerlig bryter dem i halvdeler inntil nå enkeltelementer av listen , som deretter flettes i rekkefølge. For eksempel begynne med en nummerert liste som

    5 6 2 4 1 9 8 3 7

    Sortere en liste som dette med en flette typen vil kreve halvere listelengde gjentatte ganger til hver grunnleggende tall foreligger alene. Deretter kan den slags sammenligne tallene og sette dem sammen i riktig rekkefølge ( lavest til høyest , i dette tilfellet) .
    Merge Method

    merge metoden er enkel : en

    def merge (første , andre )

    Tar to lister , vil metoden flette dem sammen ved å starte i begynnelsen av hver liste . Deretter tilføyer den neste minste mengde av hver liste inn i en ny liste . Resultatet er en sortert liste . ( Husk å skikkelig sette tab hvit mellomrom etter "mens " og " hvis /annet " uttalelser . ) : En

    mens i < len ( først) og j < len ( andre ) :
    < p> hvis første [ i] < = andre [ j ] : en

    new_list.append ( første [ i] )

    i = i + 1

    annet :

    new_list.append ( andre [ j ] )

    j = j + 1 }

    Endelig, etter en liste slutter, er de resterende verdiene plasseres i den nye listen :

    new_list + = første [i : ]

    new_list + = andre [ j : ]

    retur end_list
    Merge Sorter betingelser

    selve flettingen slags driver den viktigste sortering algoritme . Det er hovedsakelig to funksjonelle deler: betinget aspekt som stopper rekursjon når listene er delt og den faktiske rekursjon som halverer listene . Den stoppet opp tilstanden kommer først : en

    def mergesort (liste ) : en

    hvis len (liste ) == 1 : en

    retur listen
    p Dette sikrer at når en sub liste når bare ett element , som element er returnert i for at den skal bli slått sammen med de andre tallene .
    Merge Sorter Rekursjon

    den andre halvdelen av den slags er rekursjon . Etter " hvis " statement /betinget , som følger : en

    annet : en

    midten = len (liste ) /2

    start = mergesort (liste [ midten : ] )

    end = mergesort (liste [ : midten ] )

    retur merge (start , slutt)

    grunn av rekursjon , etter at listene er delt inn i enkeltelementer , algoritmen tilbake sporer opp til det sist utførte metode . Så , etter den tid påstanden "return merge (start , slutt) " utfører , returnerer algoritmen et fusjonert , sortert liste med to tidligere slått sammen , sortert lister over mindre størrelse .

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan lage variabler Output hele tall i Python progra…
    ·Hvordan lese bildene i en mappe på Python 
    ·Hvordan installere Python i WinPE 
    ·Opplæring for Runpy i Python 
    ·Python Eiendom Funksjon 
    ·Metoden Funksjon og klasse i Python 
    ·Hvordan Slice en liste i Python 
    ·Hvordan bruke Python Script på Web Server 
    ·Statiske funksjoner i Python 
    ·Hvordan Konstruer en ordbok i Python 
      Anbefalte artikler
    ·Hvordan å konsumere en Atom -feed i Python 
    ·Opplæring for Runpy i Python 
    ·Hvordan oppdage mobilnettlesere Med ASP 
    ·Hvordan legge til et objekt til Visningsstatusen 
    ·Opplæring for ADODC Kontroll 
    ·Hvordan lage en tekstboks vise avhengige på en listebo…
    ·Slik bruker du Bli med og Split funksjoner i Python pro…
    ·Hvordan Reset MySQL 5.1 Root passord i Windows 
    ·Hvordan sende HTML- skjemadata til en tekstfil 
    ·Hvordan å kompilere Netcat 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/