1 00:00:00,000 --> 00:00:08,532 >> [MUSIC SPIEL] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA CHAN: Das erste, was Sie vielleicht Hinweis zu finden, ist, dass wir bereits 3 00:00:12,060 --> 00:00:13,450 Code haben für uns geschrieben. 4 00:00:13,450 --> 00:00:15,160 Dies wird Verteilung Code bezeichnet. 5 00:00:15,160 --> 00:00:18,000 So werden wir nicht nur schreiben unsere eigenen Code von Grund auf mehr. 6 00:00:18,000 --> 00:00:22,800 Vielmehr sind wir in den Hohlräumen Füllung in einigen bereits bestehenden Code. 7 00:00:22,800 --> 00:00:27,790 >> Die find.c Programm fordert für Zahlen um den Heuhaufen zu füllen, sucht das 8 00:00:27,790 --> 00:00:32,189 Heuschober für einen Benutzer vorgelegt Nadel, und es tut dies, indem Art und 9 00:00:32,189 --> 00:00:35,590 Suche, Funktionen definiert in helpers.c. 10 00:00:35,590 --> 00:00:37,670 So find.c ist bereits geschrieben. 11 00:00:37,670 --> 00:00:40,770 Ihre Aufgabe ist es, Helfer zu schreiben. 12 00:00:40,770 --> 00:00:41,870 >> Also, was tun wir? 13 00:00:41,870 --> 00:00:44,210 Wir sind der Umsetzung zwei Funktionen. 14 00:00:44,210 --> 00:00:49,030 Suche, die true zurückgibt, wenn ein Wert wird im Heuhaufen gefunden, der Rückkehr 15 00:00:49,030 --> 00:00:51,370 false, wenn der Wert nicht im Heuhaufen. 16 00:00:51,370 --> 00:00:57,990 Und dann sind wir auch die Umsetzung sortieren die sortiert die Array namens Werte. 17 00:00:57,990 --> 00:00:59,960 >> Also lassen Sie uns Suche anzugehen. 18 00:00:59,960 --> 00:01:04,560 Suche ist derzeit als ein umgesetzt lineare Suche, aber man kann viel tun, 19 00:01:04,560 --> 00:01:05,550 besser als die. 20 00:01:05,550 --> 00:01:09,910 Lineare Suche ist in O umgesetzt n Zeit, die ziemlich langsam ist. 21 00:01:09,910 --> 00:01:13,850 Obwohl, kann es zu suchen jede Liste, um sie gegeben. 22 00:01:13,850 --> 00:01:20,130 Ihre Aufgabe ist es, binäre Suche zu implementieren, die Zeit von O log n ausgeführt wurde. 23 00:01:20,130 --> 00:01:21,130 Das ist ziemlich schnell. 24 00:01:21,130 --> 00:01:23,170 >> Aber es gibt eine Bedingung. 25 00:01:23,170 --> 00:01:27,600 Binäre Suche kann nur suchen durch vorsortiert Listen. 26 00:01:27,600 --> 00:01:30,370 Warum ist das so? 27 00:01:30,370 --> 00:01:32,620 >> Nun schauen wir uns ein Beispiel an. 28 00:01:32,620 --> 00:01:36,280 Da ein Array von Werten, die Heuhaufen, wir gehen auf der Suche 29 00:01:36,280 --> 00:01:37,130 für eine Nadel. 30 00:01:37,130 --> 00:01:40,460 Und in diesem Beispiel, die ganze Zahl drei ist. 31 00:01:40,460 --> 00:01:44,130 Die Art und Weise, dass binäre Suche funktioniert ist, dass Vergleichen wir den mittleren Wert von 32 00:01:44,130 --> 00:01:48,370 das Array an der Nadel, ähnlich wie, wie eröffneten wir ein Telefonbuch in der Mitte 33 00:01:48,370 --> 00:01:50,660 Seite in Woche null. 34 00:01:50,660 --> 00:01:54,650 >> Also nach dem Vergleich der Mittelwert die Nadel, die Sie entweder zu verwerfen kann die 35 00:01:54,650 --> 00:01:58,530 linke oder die rechte Hälfte der Anordnung durch Anziehen Ihre Grenzen. 36 00:01:58,530 --> 00:02:03,390 In diesem Fall wird, da drei unserer Nadel, weniger als 10, der mittlere Wert, der 37 00:02:03,390 --> 00:02:05,990 Recht gebunden ist, zu verringern. 38 00:02:05,990 --> 00:02:08,400 Aber versuchen Sie, Ihre Grenzen zu machen so fest wie möglich. 39 00:02:08,400 --> 00:02:11,630 Wenn der mittlere Wert ist nicht die Nadel, dann wissen Sie, dass Sie nicht brauchen, um 40 00:02:11,630 --> 00:02:13,010 schließen sie in Ihrer Suche. 41 00:02:13,010 --> 00:02:17,310 So haben Sie Recht gebunden sind können ziehen Sie die Suche haft nur ein kleines bisschen mehr, 42 00:02:17,310 --> 00:02:21,770 und so weiter und so fort, bis Sie finden Ihre Nadel. 43 00:02:21,770 --> 00:02:23,480 >> Also, was hat der Pseudocode aussehen? 44 00:02:23,480 --> 00:02:28,420 Nun, während wir noch auf der Suche durch die Liste und haben immer noch Elemente 45 00:02:28,420 --> 00:02:33,690 Blick in nehmen wir die Mitte der Liste, und zu vergleichen, dass die mittlere Wert 46 00:02:33,690 --> 00:02:34,950 unsere Nadel. 47 00:02:34,950 --> 00:02:37,310 Wenn sie gleich sind, dann ist das bedeutet, wir haben gefunden, die Nadel und wir können 48 00:02:37,310 --> 00:02:38,990 return true. 49 00:02:38,990 --> 00:02:42,870 >> Andernfalls, wenn die Nadel kleiner als der mittlere Wert, dann bedeutet, dass wir 50 00:02:42,870 --> 00:02:47,280 kann die rechte Hälfte verwerfen und nur suchen Sie die linke Seite des Feldes. 51 00:02:47,280 --> 00:02:51,090 Sonst werden wir suchen die rechten Seite der Anordnung. 52 00:02:51,090 --> 00:02:54,410 Und am Ende, wenn Sie keine haben mehr Elemente von links nach suchen, aber Sie 53 00:02:54,410 --> 00:02:58,050 nicht Ihre Nadel noch nicht gefunden, dann false zurück, da die Nadel 54 00:02:58,050 --> 00:03:01,890 definitiv nicht im Heuhaufen. 55 00:03:01,890 --> 00:03:05,270 >> Jetzt eine nette Sache über diese Pseudo in binären Suche ist, dass es sein kann 56 00:03:05,270 --> 00:03:09,940 entweder als ein iteratives interpretiert oder rekursive Implementierung. 57 00:03:09,940 --> 00:03:13,810 So wäre es, wenn Sie rekursiv aufgerufen die Suchfunktion im Such 58 00:03:13,810 --> 00:03:17,350 funktionieren auf jeder Hälfte des Feldes. 59 00:03:17,350 --> 00:03:21,030 Wir werden Rekursion ein bisschen später in der Abdeckung Natürlich aber weiß, dass es ein 60 00:03:21,030 --> 00:03:24,190 Option, wenn Sie möchten, um zu versuchen. 61 00:03:24,190 --> 00:03:26,030 >> Jetzt schauen wir uns sortieren. 62 00:03:26,030 --> 00:03:30,750 Sortieren nimmt ein Array und den ganzzahligen n, der die Größe des Arrays ist. 63 00:03:30,750 --> 00:03:34,030 Nun gibt es verschiedene Arten der Art, und Sie können einige sehen 64 00:03:34,030 --> 00:03:36,370 Shorts für Demos und Erklärungen. 65 00:03:36,370 --> 00:03:39,580 Der Rückgabetyp für unsere Sortierfunktion ist nichtig. 66 00:03:39,580 --> 00:03:43,580 Das heißt also, dass wir nicht um jede Art von Array zurück. 67 00:03:43,580 --> 00:03:48,140 Wir sind eigentlich vor sich geht, die sehr verändern Array, das in uns übergeben wurde. 68 00:03:48,140 --> 00:03:52,290 >> Und das ist möglich, weil Arrays sind durch Bezugnahme in C geleitet Jetzt werden wir 69 00:03:52,290 --> 00:03:55,290 siehe dazu später mehr, aber die wesentliche Unterschied zwischen Tod 70 00:03:55,290 --> 00:03:59,340 in so etwas wie einer ganzen Zahl und Weitergabe in einer Anordnung, dass, wenn man 71 00:03:59,340 --> 00:04:03,490 Pass in einer ganzen Zahl, ist gerade dabei, C eine Kopie dieser integer und übergeben 72 00:04:03,490 --> 00:04:04,450 es an die Funktion. 73 00:04:04,450 --> 00:04:08,530 Die ursprüngliche Variable wird nicht geändert sobald die Funktion beendet. 74 00:04:08,530 --> 00:04:12,480 Mit einer Anordnung, auf der anderen Seite, ist es nicht, um eine Kopie zu machen, und Sie werden 75 00:04:12,480 --> 00:04:17,910 tatsächlich werden die Bearbeitung der Array selbst sehr. 76 00:04:17,910 --> 00:04:21,269 >> So eine Art der Sortierung ist die Auswahl sortieren. 77 00:04:21,269 --> 00:04:24,750 Die Auswahl funktioniert durch die Art ab der Anfang, und dann können Sie laufen 78 00:04:24,750 --> 00:04:26,820 über und finden Sie das kleinste Element. 79 00:04:26,820 --> 00:04:30,710 Und dann tauschen die kleinste Element mit dem ersten. 80 00:04:30,710 --> 00:04:34,360 Und dann auf das zweite Element bewegen , Finden Sie die nächstkleinere 81 00:04:34,360 --> 00:04:38,320 Element, und dann tauschen, dass mit dem zweite Element in dem Array, weil 82 00:04:38,320 --> 00:04:41,100 das erste Element bereits sortiert. 83 00:04:41,100 --> 00:04:45,370 Und so dann können Sie für jede weiter Element bei der Identifizierung der kleinsten 84 00:04:45,370 --> 00:04:47,690 Wert und tauschen es aus. 85 00:04:47,690 --> 00:04:53,460 >> Denn ich gleich 0 ist, das erste Element n minus 1, Sie gehen zu vergleichen sind 86 00:04:53,460 --> 00:04:57,820 jeder nächste Wert danach und finden der Index des minimalen Wert. 87 00:04:57,820 --> 00:05:02,520 Sobald Sie den Mindestwert-Index zu finden, Sie können diesen Wert von Array tauschen 88 00:05:02,520 --> 00:05:05,930 Mindest-und Array I. 89 00:05:05,930 --> 00:05:09,760 >> Eine andere Art der Art, dass man implementieren ist Bubble-Sort. 90 00:05:09,760 --> 00:05:14,380 So Bubble Sort durchläuft der Liste Vergleich benachbarter Elemente und 91 00:05:14,380 --> 00:05:17,720 Vertauschen der Elemente, die sind in der falschen Reihenfolge. 92 00:05:17,720 --> 00:05:22,380 Und auf diese Weise, das größte Element Blase wird bis zum Ende. 93 00:05:22,380 --> 00:05:28,070 Und die Liste wird einmal nicht mehr sortiert Elemente wurden ausgetauscht. 94 00:05:28,070 --> 00:05:31,920 >> Das sind also zwei Beispiele für die Art Algorithmen, die Sie umsetzen können 95 00:05:31,920 --> 00:05:33,230 der Fund-Programm. 96 00:05:33,230 --> 00:05:37,350 Sobald Sie fertig zu sortieren, und Sie haben Suche gemacht, fertig. 97 00:05:37,350 --> 00:05:39,720 Mein Name ist Zamyla, und dies ist CS50. 98 00:05:39,720 --> 00:05:46,987 >> [MUSIC SPIEL]