1 00:00:00,000 --> 00:00:08,532 >> [MUSIQUE JEU] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA CHAN: La première chose que vous pourriez avis sur trouvaille est que nous avons déjà 3 00:00:12,060 --> 00:00:13,450 ont le code écrit pour nous. 4 00:00:13,450 --> 00:00:15,160 C'est ce qu'on appelle le code de distribution. 5 00:00:15,160 --> 00:00:18,000 Donc, nous ne sommes pas en train d'écrire notre propre coder à partir de zéro plus. 6 00:00:18,000 --> 00:00:22,800 Au contraire, nous sommes en remplissant les vides dans un code pré-existant. 7 00:00:22,800 --> 00:00:27,790 >> Le programme de find.c invite à numéros pour remplir la botte de foin, recherche dans le 8 00:00:27,790 --> 00:00:32,189 meule de foin pour une aiguille d'utilisateur soumis, et il le fait en appelant tri et de 9 00:00:32,189 --> 00:00:35,590 recherche, les fonctions définies dans helpers.c. 10 00:00:35,590 --> 00:00:37,670 Donc find.c est déjà écrit. 11 00:00:37,670 --> 00:00:40,770 Votre travail consiste à écrire des aides. 12 00:00:40,770 --> 00:00:41,870 >> Alors, que faisons-nous? 13 00:00:41,870 --> 00:00:44,210 Nous mettons en œuvre deux fonctions. 14 00:00:44,210 --> 00:00:49,030 Recherche, qui retourne true si une valeur se trouve dans la botte de foin, de retour 15 00:00:49,030 --> 00:00:51,370 false si la valeur est pas dans la botte de foin. 16 00:00:51,370 --> 00:00:57,990 Et puis nous sommes aussi implémenter le tri qui trie le tableau des valeurs dites. 17 00:00:57,990 --> 00:00:59,960 >> Donc, nous allons aborder la recherche. 18 00:00:59,960 --> 00:01:04,560 Recherche est actuellement mis en œuvre dans un recherche linéaire, mais vous pouvez faire beaucoup 19 00:01:04,560 --> 00:01:05,550 mieux que cela. 20 00:01:05,550 --> 00:01:09,910 La recherche linéaire est mis en œuvre dans O de n temps, ce qui est assez lent. 21 00:01:09,910 --> 00:01:13,850 Bien, il peut rechercher une liste qui lui est donné. 22 00:01:13,850 --> 00:01:20,130 Votre travail consiste à mettre en œuvre la recherche binaire, qui a le temps d'exécution de O log n. 23 00:01:20,130 --> 00:01:21,130 C'est assez rapide. 24 00:01:21,130 --> 00:01:23,170 >> Mais il ya une stipulation. 25 00:01:23,170 --> 00:01:27,600 Recherche binaire ne peut chercher à travers des listes pré-triées. 26 00:01:27,600 --> 00:01:30,370 Pourquoi est-ce? 27 00:01:30,370 --> 00:01:32,620 >> Eh bien, regardons un exemple. 28 00:01:32,620 --> 00:01:36,280 Dans une série de valeurs, la botte de foin, nous allons être à la recherche 29 00:01:36,280 --> 00:01:37,130 une aiguille. 30 00:01:37,130 --> 00:01:40,460 Et dans cet exemple, le nombre entier de trois. 31 00:01:40,460 --> 00:01:44,130 La façon dont la recherche binaire fonctionne est que on compare la valeur moyenne de 32 00:01:44,130 --> 00:01:48,370 le tableau à l'aiguille, de façon similaire comment nous avons ouvert un répertoire au milieu 33 00:01:48,370 --> 00:01:50,660 page en semaine zéro. 34 00:01:50,660 --> 00:01:54,650 >> Ainsi, après la comparaison de la valeur moyenne de l'aiguille, vous pouvez jeter soit la 35 00:01:54,650 --> 00:01:58,530 gauche ou la partie droite du tableau en serrant vos limites. 36 00:01:58,530 --> 00:02:03,390 Dans ce cas, depuis trois ans, notre aiguille, est inférieur à 10, la valeur moyenne, l' 37 00:02:03,390 --> 00:02:05,990 droit lié peut diminuer. 38 00:02:05,990 --> 00:02:08,400 Mais essayez de faire vos limites aussi serrée que possible. 39 00:02:08,400 --> 00:02:11,630 Si la valeur moyenne n'est pas l'aiguille, alors vous savez que vous n'avez pas besoin de 40 00:02:11,630 --> 00:02:13,010 inclure dans votre recherche. 41 00:02:13,010 --> 00:02:17,310 Vous avez donc raison liée peut serrer la recherche bornes juste un tout petit peu plus, 42 00:02:17,310 --> 00:02:21,770 et ainsi de suite et ainsi de suite jusqu'à ce que vous trouverez votre aiguille. 43 00:02:21,770 --> 00:02:23,480 >> Alors qu'est-ce que le pseudo ressemble? 44 00:02:23,480 --> 00:02:28,420 Eh bien alors que nous sommes toujours à la recherche par le biais la liste et ont encore des éléments à 45 00:02:28,420 --> 00:02:33,690 regarder dans, nous prenons le milieu de la liste, et comparer cette valeur moyenne à 46 00:02:33,690 --> 00:02:34,950 notre aiguille. 47 00:02:34,950 --> 00:02:37,310 Si elles sont égales, alors cela signifie que nous avons trouvé l'aiguille et nous pouvons 48 00:02:37,310 --> 00:02:38,990 return true. 49 00:02:38,990 --> 00:02:42,870 >> Dans le cas contraire, si l'aiguille est inférieure à la valeur moyenne, alors cela signifie que nous 50 00:02:42,870 --> 00:02:47,280 peut jeter la moitié droite, et juste et chercher dans la partie gauche du tableau. 51 00:02:47,280 --> 00:02:51,090 Sinon, nous allons chercher la côté droit de la matrice. 52 00:02:51,090 --> 00:02:54,410 Et à la fin, si vous n'avez pas plusieurs éléments laissés à la recherche, mais vous 53 00:02:54,410 --> 00:02:58,050 n'avez pas encore trouvé votre aiguille, alors vous return false parce que l'aiguille 54 00:02:58,050 --> 00:03:01,890 n'est certainement pas dans la botte de foin. 55 00:03:01,890 --> 00:03:05,270 >> Maintenant, une chose intéressante à propos de cette pseudo- à la recherche binaire est qu'il peut être 56 00:03:05,270 --> 00:03:09,940 interprété comme étant un processus itératif ou la mise en œuvre récursive. 57 00:03:09,940 --> 00:03:13,810 Donc, il serait récursif si vous appeliez la fonction de recherche dans la recherche 58 00:03:13,810 --> 00:03:17,350 fonctionner sur une ou l'autre moitié de la matrice. 59 00:03:17,350 --> 00:03:21,030 Nous allons couvrir la récursivité un peu plus tard dans la bien sûr, mais je ne sais que c'est un 60 00:03:21,030 --> 00:03:24,190 option si vous souhaitez essayer. 61 00:03:24,190 --> 00:03:26,030 >> Maintenant regardons sorte. 62 00:03:26,030 --> 00:03:30,750 Trier prend un tableau et l'entier n, ce qui est la taille de la matrice. 63 00:03:30,750 --> 00:03:34,030 Maintenant, il existe différents types de toutes sortes, et vous pouvez regarder quelques-uns 64 00:03:34,030 --> 00:03:36,370 shorts pour des démonstrations et des explications. 65 00:03:36,370 --> 00:03:39,580 Le type de retour pour notre fonction de tri est vide. 66 00:03:39,580 --> 00:03:43,580 Cela signifie donc que nous n'allons pas à retourner n'importe quel tableau de genre. 67 00:03:43,580 --> 00:03:48,140 Nous allons en fait changer le très tableau qui a été adoptée en nous. 68 00:03:48,140 --> 00:03:52,290 >> Et c'est possible parce que les tableaux sont passés par référence en C. Maintenant, nous allons 69 00:03:52,290 --> 00:03:55,290 en savoir plus sur cela plus tard, mais la différence essentielle entre la réussite 70 00:03:55,290 --> 00:03:59,340 quelque chose comme un entier et le passage dans un tableau, c'est que lorsque vous 71 00:03:59,340 --> 00:04:03,490 passer à un nombre entier, C va juste faire une copie de cet entier et passer 72 00:04:03,490 --> 00:04:04,450 à la fonction. 73 00:04:04,450 --> 00:04:08,530 La variable d'origine ne sera pas modifié une fois que la fonction est terminée. 74 00:04:08,530 --> 00:04:12,480 Avec un tableau, d'autre part, c'est ne va pas faire une copie, et vous aurez 75 00:04:12,480 --> 00:04:17,910 être en fait l'édition du tableau elle-même. 76 00:04:17,910 --> 00:04:21,269 >> Donc, un type de tri est le genre de sélection. 77 00:04:21,269 --> 00:04:24,750 Le genre de sélection fonctionne en commençant par le début, puis vous parcourez 78 00:04:24,750 --> 00:04:26,820 plus et de trouver le plus petit élément. 79 00:04:26,820 --> 00:04:30,710 Et puis vous changez que la plus petite élément avec la première. 80 00:04:30,710 --> 00:04:34,360 Et puis vous passez à la deuxième élément , Trouver la prochaine plus petite 81 00:04:34,360 --> 00:04:38,320 élément, puis swap avec la second élément dans le tableau parce 82 00:04:38,320 --> 00:04:41,100 le premier élément est déjà trié. 83 00:04:41,100 --> 00:04:45,370 Et alors vous continuez pour chaque Elément à identifier le plus petit 84 00:04:45,370 --> 00:04:47,690 valeur et échangeant sur. 85 00:04:47,690 --> 00:04:53,460 >> Pour I est égale à 0, le premier élément à n moins 1, vous allez comparer 86 00:04:53,460 --> 00:04:57,820 chaque valeur suivante après cela et trouver l'indice de la valeur minimale. 87 00:04:57,820 --> 00:05:02,520 Une fois que vous trouverez l'indice de valeur minimale, vous pouvez échanger cette valeur de tableau 88 00:05:02,520 --> 00:05:05,930 I. minimum et réseau 89 00:05:05,930 --> 00:05:09,760 >> Un autre type de sorte que vous pouvez la mise en œuvre est tri à bulles. 90 00:05:09,760 --> 00:05:14,380 Ainsi bulle tri parcourt la liste on compare les éléments adjacents et 91 00:05:14,380 --> 00:05:17,720 permuter les éléments qui sont dans le mauvais ordre. 92 00:05:17,720 --> 00:05:22,380 Et de cette façon, le plus grand élément fera des bulles à la fin. 93 00:05:22,380 --> 00:05:28,070 Et la liste est triée fois plus éléments ont été échangés. 94 00:05:28,070 --> 00:05:31,920 >> Donc, ce sont deux exemples de tri algorithmes que vous pouvez mettre en œuvre pour 95 00:05:31,920 --> 00:05:33,230 le programme de recherche. 96 00:05:33,230 --> 00:05:37,350 Une fois que vous avez terminé de tri, et vous avez recherche effectuée, vous avez terminé. 97 00:05:37,350 --> 00:05:39,720 Mon nom est Zamyla, et c'est CS50. 98 00:05:39,720 --> 00:05:46,987 >> [MUSIQUE JEU]