Sortering en rekke data er en av de klassiske problemene i informatikk , og så det burde ikke komme som noen overraskelse at en rekke metoder for sortering i Turbo C og andre språk har blitt unnfanget . De spenner fra ineffektive , men enkel å implementere metoder til mye raskere, men mer komplekse metoder. Den beste algoritme for en situasjon avhenger av den forventede størrelse til datasettet som skal sorteres og viktigheten av effektivitet . Bubble Sorter
Bubble Sorter er den enkleste og tregeste , sortering algoritme . Den fortsetter ganske enkelt gjennom matrisen, å sammenligne det aktuelle element til element direkte foran den. Hvis disse to elementene er ute av drift , bytter de plass . Når boblen Sorter nådd slutten , sjekker den for å se om noe forandret steder. Hvis den gjorde det, starter det på nytt fra begynnelsen . Det fortsetter looping gjennom utvalget før den klarer å fullføre en full pass uten å gjøre noe bytte . I gjennomsnitt tar dette O ( n ² ) tid , men hvis dataene er kjent for å være svært nær sortert, med kanskje bare ett element malplassert , kan dette fungere i O ( n). Så det er en god metode for små matriser som ikke er sortert ofte eller større matriser som er kjent for å være allerede sortert (eller svært nær dette ) mesteparten av tiden .
Selection Sorter
Selection typen er litt mer raffinert enn Bubble Sort. Algoritmen fortsetter gjennom hele matrisen med data for å finne den minste elementet . Uansett hvor det elementet er , har det sin posisjon byttet med det første elementet , og en teller bemerker at det første elementet i matrisen er kjent for å være riktig sortert. Det deretter fortsetter gjennom hele matrisen igjen , bortsett fra det første elementet ( som er kjent for å være på riktig plass . ) Når den finner det minste element , flyttes den til det andre sted og øker telleren for å indikere at de to første elementer er kjent for å bli sortert . Totalt sett fungerer Selection Sorter i O ( n ² ) tid , men det har en fordel: på det meste, bare n- 1 endringer gang skje til array , siden hvert element er bare flyttes når sin posisjon er kjent. Dette gjør det en god algoritme i noen eksotiske situasjoner der skriver data til minnet tar drastisk lengre enn å lese den.
Quicksort
p Som navnet tilsier , den quicksort er rask . I gjennomsnitt kan det utføre en slags i O ( n log n ) tid . Men det er mye mer kompleks enn mange andre programmer og krever at utvikleren vet litt om dataene i matrisen før hånden. Først en " pivot verdi " må velges . Dette er den verdien som utbygger mener er nær medianen av alle verdiene i tabellen. Jo bedre pivot verdi , jo raskere quicksort skal utføre. Deretter blir matrisen delt inn i to grupper: de over pivot verdi er flyttet til høyre side , og de under pivot verdi flyttes til venstre side. Forhåpentligvis , de to sidene er nær ved å være lik i størrelse , men de trenger ikke å være akkurat det samme. Til slutt , begynner quicksort algoritmen over fra bunnen på hver side , med ny dreietapp verdier valgt , og disse halvdeler er slutt delt i fire deler . Når quicksort har delt matrisen slik at hver seksjon har én verdi , har matrisen er sortert .
Som de fleste rekursive algoritmer , kan dette være vanskelig å visualisere , så du oppfordres til å se trinnvis - eksempelet gitt i tredje referanse.