[Musikgengivelse] ZAMYLA CHAN: Den første ting du måske bekendtgørelse om fund er, at vi allerede have kode skrevet til os. Dette kaldes fordeling kode. Så vi ikke bare skrive vores egen kode fra bunden længere. Snarere, vi udfylder hulrum i nogle eksisterende kode. Det find.c programmet beder for tal at fylde høstak, søger høstak for en bruger indsendte nål, og det gør dette ved at kalde sortere og søgning, funktioner defineret i helpers.c. Så find.c er skrevet allerede. Dit job er at skrive hjælpere. Så hvad gør vi? Vi gennemføre to funktioner. Søg, som returnerer true, hvis en værdi er fundet i høstakken, vender tilbage falsk, hvis værdien er ikke i høstakken. Og så er vi også gennemføre slags som sorterer array kaldet værdier. Så lad os tage fat søgning. Søg i øjeblikket gennemføres som et lineær søgning, men du kan gøre meget bedre end det. Lineær søgning er implementeret i O n tid, hvilket er ganske langsomt. Selv kan den søge enhver liste, det fik. Dit job er at implementere binær søgning, der har kørt tid O af log n. Det er temmelig hurtigt. Men der er en bestemmelse. Binær søgning kan kun søge gennem pre-sorterede lister. Hvorfor er det? Jamen så lad os se på et eksempel. I betragtning af en matrix af værdier, høstak, vi kommer til at være på udkig efter en nål. Og i dette eksempel, heltallet tre. Den måde, at binær søgning værker er, at Sammenligner vi den midterste værdi af array til nålen, meget gerne, hvordan åbnede vi en telefonbog til midten side i uge nul. Så efter sammenligning af den midterste værdi til nålen, kan du kassere enten venstre eller højre halvdel af array ved at stramme dine grænser. I dette tilfælde, da tre vores nål, er mindre end 10, den midterste værdi, højre bundet kan falde. Men prøv at gøre dine grænser så stramt som muligt. Hvis den midterste værdi ikke er den nål, så ved du at du ikke behøver at medtage den i din søgning. Så du har ret bundet kan stramme den søgning bounds bare en lille smule mere, og så videre og så videre, indtil du finder din nål. Så hvad betyder det pseudokode se ud? Nå, mens vi stadig kigger gennem listen og stadig have elementer til kigge i, tager vi midt på listen, og sammenligne det midterste værdi til vores nål. Hvis de er lige, så det betyder, at vi har fundet nålen og vi kan returnere sandt. Ellers, hvis nålen er mindre end den midterste værdi, så det betyder, at vi kan skille den højre halvdel, og lige søge i venstre side af matrixen. Ellers vil vi søge højre side af matrixen. Og til sidst, hvis du ikke har nogen flere elementer tilbage til søgning, men du har ikke fundet nålen endnu, så du return false fordi nålen absolut ikke er i høstakken. Nu er en pæn ting om dette pseudokode i binær søgning er, at det kan være tolkes enten en iterativ eller rekursive gennemførelse. Så det ville være rekursiv hvis du kaldte søgefunktionen i søgningen kan fungere på hver halvdel af matrixen. Vi dækker rekursion lidt senere i naturligvis, men ved, at det er et mulighed, hvis du gerne vil prøve. Lad os nu se på slags. Sorter tager et array og heltal n, som er størrelsen af ​​matrixen. Nu er der forskellige typer slags, og du kan se på nogle shorts til demoer og forklaringer. Afkastet type til vores slags funktion er ugyldig. Så det betyder, at vi ikke kommer at returnere eventuelle vifte af slags. Vi er faktisk kommer til at ændre den meget array, der blev vedtaget i os. Og det er muligt, fordi arrays er sendes som reference i C. Nu vil vi se mere om dette senere, men væsentlig forskel mellem forbigående i noget som et heltal og passerer i et array, er, at når du passere i et heltal, C bare kommer til at lave en kopi af heltal og videregive det til funktionen. Den oprindelige variabel vil ikke blive ændret når funktionen er færdig. Med et array på den anden side er det ikke kommer til at lave en kopi, og du vil faktisk redigere meget matrix selv. Så en form for sortering er udvælgelse slags. Udvælgelsen sortere fungerer ved at starte på starten, og så skal du gentage igen og finde det mindste element. Og så skal du bytte at mindste elementet med den første. Og så skal du flytte til det andet element Finder den næstmindste element og derefter swap at med andet element i array, fordi det første element allerede er sorteret. Og så så du fortsætter til hver element i at identificere den mindste værdi og bytte det ud. For jeg er lig med 0, det allerførste element til n minus 1, er du nødt til at sammenligne hver næste værdi efter det og finde indekset for den mindste værdi. Når du finder den mindste værdi indekset, du kan bytte, at værdien af ​​matrix minimum og matrix I. En anden type af slags, som du kan redskabet er boble slags. Så boble sortere gentager over listen sammenligning af tilstødende elementer og bytte de elementer, der er i den forkerte rækkefølge. Og på denne måde, det største element vil boble til enden. Og listen er sorteret engang ikke mere elementer er blevet byttet. Så det er to eksempler på sortering algoritmer, som du kan gennemføre for Find programmet. Når du er færdig sortere, og du har gjort søgning, er du færdig. Mit navn er Zamyla, og det er CS50. [Musikgengivelse]