Sortering et array af data er et af de klassiske problemer i datalogi, og så det burde ikke komme som nogen overraskelse, at en bred vifte af metoder til sortering i Turbo C og andre sprog er blevet undfanget. De spænder fra ineffektive , men enkel at implementere metoder til meget hurtigere, men mere komplekse metoder. Den bedste algoritme til en situation , afhænger af den forventede størrelse af de data , der skal sorteres og betydningen af effektivitet. Bubble Sort
Bubble Sort er den enkleste og langsomste , sortering algoritme. Det er simpelthen fortsætter gennem array, sammenligner det aktuelle element til elementet direkte foran det . Hvis disse to elementer er ude af drift , at de bytter plads . Når Bubble Sorter når enden , kontrollerer det, om der er noget ændret steder. Hvis det gjorde, det starter forfra . Det fortsætter looping gennem array , indtil det lykkes at fuldføre en fuld pass uden at gøre noget swapping. I gennemsnit tager det O (n ²) tid , men hvis dataene er kendt for at være meget næsten sorteres , med måske kun et element ud af plads , kan det arbejde i O (n ) . Så det er en god metode til små arrays, der ikke er sorteret ofte eller større arrays , der er kendt for at være allerede sorteret ( eller næsten så ) det meste af tiden .
Selection Sort
< br >
Selection slags er lidt mere raffineret end Bubble Sort. Algoritmen fortsætter gennem hele vifte af data for at finde det mindste element . Hvor dette element er, det har sin position byttes med det første element , og en tæller bemærker, at det første element i arrayet er kendt for at være korrekt sorteret. Det fortsætter derefter gennem hele systemet igen , bortset fra den første element ( som er kendt for at være i det korrekte sted . ) Når den finder den laveste element , flyttes det til det andet sted og øger tælleren at angive, at de to første elementer er kendt for at blive sorteret . Samlet set Selection Sorter arbejder i O ( n ²) tid , men det har en fordel: på de fleste, kun n- 1 ændrer nogensinde sker for array, da hvert element kun bevæges , når dens position er kendt. Dette gør det til en god algoritme i nogle eksotiske situationer, hvor at skrive data til hukommelsen tager drastisk længere end at læse den.
Quicksort
Som navnet antyder, QuickSort er hurtig. I gennemsnit kan det udføre en slags i O (n log n ) tid. Men det er meget mere kompleks end mange andre programmer, og kræver, at bygherren vide lidt om de data i array , før hånden . Først en " pivot value" skal vælges . Dette er den værdi , at bygherren mener er tæt på medianen af alle værdierne i matrixen . Jo bedre pivot værdi , jo hurtigere Quicksort vil udføre . Derefter er array opdelt i to grupper: dem over pivot værdien flyttes til højre side , og dem under pivot værdi flyttet til venstre side. Forhåbentlig de to sider er tæt på at være ens i størrelse , men de behøver ikke at være præcis den samme . Endelig quicksort algoritmen starter forfra på hver side, med nyt valgt pivot værdier og disse halvdele er efterhånden opdelt i kvartaler. Når quicksort har opdelt array så hver sektion har kun én værdi , er array blevet sorteret .
Som de fleste rekursive algoritmer , kan dette være svært at visualisere , så du opfordres til at se trin-for trin - eksemplet i den tredje reference.