Snabb sortera (6 / 7 steg)
Steg 6: Genomförande av quick_sort
Bakgrund
Nu när vi har skrivit den funktion som gör huvuddelen av arbetet, kan vi komma till den enkla biten. Vår quick_sort funktion är mycket lätt att förstå och bygger på idén att vi vill göra så lite arbete som möjligt själva.
Vår första fråga är: Vad är den enklaste arrayen sortera? Enligt min mening är det en med ett enda element. Om du ger mig ett nummer, kan jag sortera det omedelbart. Arbeta med detta begrepp, låt oss skriva quick_sort.
Mål
Vi vill bryta upp arbetet med hjälp av vår qs_partition funktion så att aldrig göra något verkligt arbete.
Steg
1) först ska vi kolla om vi kan undvika arbete helt och hållet. Om vår vänstra gräns är mindre än vår högra gräns, då har vi arbete att göra, tyvärr. Om vår vänstra gräns är samma som våra höger fältetikettsgräns, är avsnittet vi sorterar bara en del. Om du är större än rätt, vi är fel.
2) vår nästa strategi i arbete undvika talar om för andra människor att göra det. Vi kallar qs_partition och få det pivot index som det används. Som ni vet från det sista steget, är allt i matrisen innan detta index mindre än eller lika med värdet på pivot. Trots är allt större än pivot.
3) Vad betyder det? Det betyder att om vi sorterar allt innan pivot och allt efter pivot, vi har en sorterad array, eftersom pivot är redan på rätt plats. Så vi ska göra just detta. Vet vi något sorteringsalgoritmer? Vi har quick_sort.
Recension
Det ser ut som vi kan komma undan med att inte göra något verkligt arbete. Du ser att om vi kallar quick_sort, det resulterar i två mer quick_sort samtal, en på varje sida om våra pivot. Denna förgrening beteende kommer att fortsätta tills varje samtal går till en array som är bara en del. Eftersom en mängd ett element sorteras, sorteras våra hela matrisen.