1 00:00:00,000 --> 00:00:02,892 >> [MUSIC SPILLE] 2 00:00:02,892 --> 00:00:05,347 3 00:00:05,347 --> 00:00:07,180 DOUG LLOYD: Linear søk er en algoritme vi 4 00:00:07,180 --> 00:00:09,840 kan bruke for å finne et element i en matrise. 5 00:00:09,840 --> 00:00:11,990 En algoritme tilbakekalling er en steg-for-steg sett 6 00:00:11,990 --> 00:00:15,030 instruks for å fullføre en oppgave. 7 00:00:15,030 --> 00:00:17,480 >> Den lineære søk algoritmen virker som følger. 8 00:00:17,480 --> 00:00:22,200 Iterere over rekken fra venstre til høyre, på jakt etter en bestemt element. 9 00:00:22,200 --> 00:00:26,380 >> I pseudokode, som er en mer destillert versjon av denne setningen, 10 00:00:26,380 --> 00:00:29,840 hvis det første element er hva du leter etter, kan du stoppe. 11 00:00:29,840 --> 00:00:33,930 Ellers gå til neste element og holde går om og om igjen til du finner 12 00:00:33,930 --> 00:00:36,389 elementet, eller du ikke. 13 00:00:36,389 --> 00:00:38,680 Så vi kan bruke den lineære søkealgoritme, for eksempel, 14 00:00:38,680 --> 00:00:42,330 for å finne målverdien ni i denne matrisen. 15 00:00:42,330 --> 00:00:43,870 Vel skal vi begynne på begynnelsen. 16 00:00:43,870 --> 00:00:45,970 Hvis det er det vi er på jakt etter, kan vi stoppe. 17 00:00:45,970 --> 00:00:47,890 Det er ikke, vi er ikke ute etter 11. 18 00:00:47,890 --> 00:00:50,220 Så ellers, gå til neste element. 19 00:00:50,220 --> 00:00:51,510 >> Så vi ser på 23. 20 00:00:51,510 --> 00:00:52,730 Er 23 det vi leter etter? 21 00:00:52,730 --> 00:00:55,614 Vel nei, så vi går videre til neste element, og det neste element, 22 00:00:55,614 --> 00:00:57,780 og vi holder det gående gjennom denne prosessen igjen og igjen 23 00:00:57,780 --> 00:01:01,030 og over, før vi lander på en situasjon som dette. 24 00:01:01,030 --> 00:01:03,910 >> Ni er det vi leter etter, og dette element i matrisen 25 00:01:03,910 --> 00:01:05,787 er, er det verdi ni. 26 00:01:05,787 --> 00:01:08,120 Og så fant vi hva vi er på jakt etter, og vi kan stoppe. 27 00:01:08,120 --> 00:01:11,910 Den lineære søk har fullført, med hell. 28 00:01:11,910 --> 00:01:15,370 >> Men hva hvis vi leter etter et element som ikke er i vårt utvalg. 29 00:01:15,370 --> 00:01:17,040 Betyr lineær søke fortsatt fungere? 30 00:01:17,040 --> 00:01:17,540 Vel sikker. 31 00:01:17,540 --> 00:01:19,947 Så vi gjentar denne prosessen starter ved det første elementet. 32 00:01:19,947 --> 00:01:21,780 Hvis det er det vi er på jakt etter, kan vi stoppe. 33 00:01:21,780 --> 00:01:22,800 Det er ikke. 34 00:01:22,800 --> 00:01:25,020 Ellers flytter vi til neste element. 35 00:01:25,020 --> 00:01:29,050 >> Men vi kan terpe denne prosessen, undersøke hvert element i sin tur 36 00:01:29,050 --> 00:01:31,720 håper at vi finner nummer 50. 37 00:01:31,720 --> 00:01:33,750 Men vi vil ikke vite om vi har funnet nummeret 50 38 00:01:33,750 --> 00:01:38,290 eller hvis vi ikke gjorde det, før vi har trappet i løpet av hvert enkelt element i gruppen. 39 00:01:38,290 --> 00:01:40,440 >> Bare når vi har gjort det og komme opp kort, 40 00:01:40,440 --> 00:01:43,040 kan vi konkludere med at 50 er ikke i matrisen. 41 00:01:43,040 --> 00:01:46,410 Og så den lineære søk algoritme, vel det mislyktes, per se. 42 00:01:46,410 --> 00:01:49,181 Men ikke i den forstand at den var mislykket i å gjøre det 43 00:01:49,181 --> 00:01:49,930 vi spurte den å gjøre. 44 00:01:49,930 --> 00:01:52,390 >> Det var mislykket i så mye som det ikke fant 50, 45 00:01:52,390 --> 00:01:54,070 men 50 var ikke i tabellen. 46 00:01:54,070 --> 00:01:57,310 Men vi har grundig søkt gjennom hvert enkelt element 47 00:01:57,310 --> 00:02:00,550 og så, mens vi ikke fant noe, lineær søke fortsatt 48 00:02:00,550 --> 00:02:05,230 lykkes selv om element ikke er i matrisen. 49 00:02:05,230 --> 00:02:07,507 >> Så hva er det verste tilfellet scenario med lineær søk? 50 00:02:07,507 --> 00:02:09,590 Vel har vi å se gjennom hvert enkelt element, 51 00:02:09,590 --> 00:02:14,590 enten ved at målelementet er det siste elementet i matrisen, 52 00:02:14,590 --> 00:02:18,510 eller elementet vi leter etter ikke befinne seg i matrisen i det hele tatt. 53 00:02:18,510 --> 00:02:19,760 Hva er den best case scenario? 54 00:02:19,760 --> 00:02:22,430 Vel, vi kan finne den element umiddelbart. 55 00:02:22,430 --> 00:02:24,360 Og hvor mange elementer vi må da se 56 00:02:24,360 --> 00:02:26,859 på i beste fall hvis vi leter etter det 57 00:02:26,859 --> 00:02:28,400 og vi finner det helt i begynnelsen? 58 00:02:28,400 --> 00:02:29,850 Vi kan stoppe umiddelbart. 59 00:02:29,850 --> 00:02:32,984 >> Hva sier dette om kompleksiteten i lineær søk? 60 00:02:32,984 --> 00:02:35,650 Vel i verste fall har vi å se på hvert enkelt element. 61 00:02:35,650 --> 00:02:38,930 Og så det kjører i O av n, i verste tilfelle. 62 00:02:38,930 --> 00:02:41,540 >> I beste fall er vi skal finne elementet umiddelbart. 63 00:02:41,540 --> 00:02:44,750 Og så kjører i omega for en. 64 00:02:44,750 --> 00:02:45,780 >> Jeg er Doug Lloyd. 65 00:02:45,780 --> 00:02:48,020 Dette er CS50. 66 00:02:48,020 --> 00:02:49,876