1 00:00:00,000 --> 00:00:09,560 2 00:00:09,560 --> 00:00:13,120 >> ZAMYLA CHAN: Das erste, was Sie vielleicht Hinweis zu finden, ist, dass wir bereits 3 00:00:13,120 --> 00:00:14,520 Code haben für uns geschrieben. 4 00:00:14,520 --> 00:00:16,219 Dies wird Verteilung Code bezeichnet. 5 00:00:16,219 --> 00:00:19,060 So werden wir nicht nur schreiben unsere eigenen Code von Grund auf mehr. 6 00:00:19,060 --> 00:00:23,870 Vielmehr sind wir in den Hohlräumen Füllung in einigen bereits bestehenden Code. 7 00:00:23,870 --> 00:00:28,860 >> Die find.c Programm fordert für Zahlen um den Heuhaufen zu füllen, sucht das 8 00:00:28,860 --> 00:00:33,260 Heuschober für einen Benutzer vorgelegt Nadel, und es tut dies, indem Art und 9 00:00:33,260 --> 00:00:36,660 Suche, Funktionen definiert in helpers.c. 10 00:00:36,660 --> 00:00:38,740 So find.c ist bereits geschrieben. 11 00:00:38,740 --> 00:00:41,840 Ihre Aufgabe ist es, Helfer zu schreiben. 12 00:00:41,840 --> 00:00:42,940 >> Also, was tun wir? 13 00:00:42,940 --> 00:00:45,270 Wir sind der Umsetzung zwei Funktionen. 14 00:00:45,270 --> 00:00:50,110 Suche, die true zurückgibt, wenn ein Wert wird im Heuhaufen gefunden, der Rückkehr 15 00:00:50,110 --> 00:00:52,430 false, wenn der Wert nicht im Heuhaufen. 16 00:00:52,430 --> 00:00:59,060 Und dann sind wir auch die Umsetzung zu sortieren, die sortiert die Array namens Werte. 17 00:00:59,060 --> 00:01:01,120 Also lassen Sie uns Suche anzugehen. 18 00:01:01,120 --> 00:01:04,550 >> Suche wird derzeit umgesetzt als eine lineare Suche. 19 00:01:04,550 --> 00:01:06,620 Aber Sie tun können, viel besser als die. 20 00:01:06,620 --> 00:01:11,610 Lineare Suche ist in O n umgesetzt Zeit, die ziemlich langsam ist, obwohl es 21 00:01:11,610 --> 00:01:14,920 können jede Liste, um sie zu suchen gegeben. 22 00:01:14,920 --> 00:01:21,190 Ihre Aufgabe ist es, binäre Suche zu implementieren, die Zeit von O log n ausgeführt wurde. 23 00:01:21,190 --> 00:01:22,200 Das ist ziemlich schnell. 24 00:01:22,200 --> 00:01:24,240 >> Aber es gibt eine Bedingung. 25 00:01:24,240 --> 00:01:28,910 Binäre Suche kann nur suchen durch vorsortiert Listen. 26 00:01:28,910 --> 00:01:31,450 Warum ist das so? 27 00:01:31,450 --> 00:01:33,690 Nun, schauen wir uns ein Beispiel an. 28 00:01:33,690 --> 00:01:37,350 Da ein Array von Werten, die Heuhaufen, wir gehen auf der Suche 29 00:01:37,350 --> 00:01:41,510 eine Nadel, und in diesem beispielsweise die ganze Zahl 3. 30 00:01:41,510 --> 00:01:45,220 >> Die Art und Weise, dass binäre Suche funktioniert ist, dass Vergleichen wir den mittleren Wert von 31 00:01:45,220 --> 00:01:49,430 das Array an der Nadel, ähnlich wie, wie eröffneten wir ein Telefonbuch in der Mitte 32 00:01:49,430 --> 00:01:51,720 Seite in Woche 0. 33 00:01:51,720 --> 00:01:55,710 Also nach dem Vergleich der Mittelwert die Nadel, die Sie entweder zu verwerfen kann die 34 00:01:55,710 --> 00:01:59,620 linke oder die rechte Hälfte der Anordnung durch Anziehen Ihre Grenzen. 35 00:01:59,620 --> 00:02:04,450 In diesem Fall, da 3, unsere Nadel ist weniger als 10, der mittlere Wert, 36 00:02:04,450 --> 00:02:07,060 Recht gebunden ist, zu verringern. 37 00:02:07,060 --> 00:02:09,470 >> Aber versuchen Sie, Ihre Grenzen zu machen so fest wie möglich. 38 00:02:09,470 --> 00:02:12,690 Wenn der mittlere Wert ist nicht die Nadel, dann wissen Sie, dass Sie nicht brauchen, um 39 00:02:12,690 --> 00:02:14,070 schließen sie in Ihrer Suche. 40 00:02:14,070 --> 00:02:18,390 Also Ihr Recht gebunden anziehen kann die Suche haft nur ein kleines bisschen mehr, 41 00:02:18,390 --> 00:02:22,840 und so weiter und so fort, bis Sie finden Ihre Nadel. 42 00:02:22,840 --> 00:02:24,580 >> Also, was bedeutet das Pseudo- Code aussehen? 43 00:02:24,580 --> 00:02:28,980 Nun, während wir immer noch durch Blick die Liste und haben immer noch 44 00:02:28,980 --> 00:02:33,540 Elemente zu sehen in, nehmen wir den mittleren der Liste und vergleichen Sie das 45 00:02:33,540 --> 00:02:36,020 Mittelwert für unsere Nadel. 46 00:02:36,020 --> 00:02:38,380 Wenn sie gleich sind, dann ist das bedeutet, wir haben fand die Nadel, und wir können 47 00:02:38,380 --> 00:02:40,160 return true. 48 00:02:40,160 --> 00:02:43,940 >> Andernfalls, wenn die Nadel kleiner als der mittlere Wert, dann bedeutet, dass wir 49 00:02:43,940 --> 00:02:48,350 kann die rechte Hälfte zu verwerfen und nur suchen Sie die linke Seite des Feldes. 50 00:02:48,350 --> 00:02:51,860 Sonst werden wir suchen die rechten Seite der Anordnung. 51 00:02:51,860 --> 00:02:55,470 Und am Ende, wenn Sie keine haben mehr Elemente von links nach suchen, aber Sie 52 00:02:55,470 --> 00:02:58,030 nicht Ihre Nadel noch nicht gefunden, dann false zurück. 53 00:02:58,030 --> 00:03:02,960 Da die Nadel auf jeden Fall ist nicht im Heuhaufen. 54 00:03:02,960 --> 00:03:06,200 >> Jetzt, ein nette Sache über dieses Pseudo Code in binäre Suche ist, dass es möglich 55 00:03:06,200 --> 00:03:11,000 entweder als ein iteratives auszulegen oder rekursive Implementierung. 56 00:03:11,000 --> 00:03:14,900 So wäre es, wenn Sie rekursiv aufgerufen die Suchfunktion im Such 57 00:03:14,900 --> 00:03:18,400 funktionieren auf jeder Hälfte des Feldes. 58 00:03:18,400 --> 00:03:20,750 Wir werden ein bisschen decken Rekursion später in den Kurs. 59 00:03:20,750 --> 00:03:23,210 Aber wissen, dass es ist eine Option wenn Sie möchten, um zu versuchen. 60 00:03:23,210 --> 00:03:24,460