1 00:00:00,000 --> 00:00:09,560 2 00:00:09,560 --> 00:00:13,120 >> ZAMYLA CHAN: Gjëja e parë që ju mund Njoftimi në lidhje me gjeni është se ne tashmë 3 00:00:13,120 --> 00:00:14,520 kanë Kodi shkruar për ne. 4 00:00:14,520 --> 00:00:16,219 Kjo quhet kod shpërndarjes. 5 00:00:16,219 --> 00:00:19,060 Pra, ne nuk jemi vetëm shkrim e jona kodin nga e para më. 6 00:00:19,060 --> 00:00:23,870 Më saktë, ne jemi duke plotësuar voids në disa kodin para-ekzistuese. 7 00:00:23,870 --> 00:00:28,860 >> Programi find.c bën për numrat për të mbushur kashtë, kërkon 8 00:00:28,860 --> 00:00:33,260 kashtë për një përdorues dorëzuar gjilpërë, dhe kjo e bën këtë duke e quajtur lloj dhe 9 00:00:33,260 --> 00:00:36,660 kërkimi, funksionet e përcaktuar në helpers.c. 10 00:00:36,660 --> 00:00:38,740 Pra find.c është shkruar tashmë. 11 00:00:38,740 --> 00:00:41,840 Puna juaj është për të shkruar ndihmëtarë. 12 00:00:41,840 --> 00:00:42,940 >> Pra, çfarë po bëjmë? 13 00:00:42,940 --> 00:00:45,270 Ne jemi duke zbatuar dy funksione. 14 00:00:45,270 --> 00:00:50,110 Search, e cila jep true nëse një vlerë e është gjetur në kashtë, duke u kthyer 15 00:00:50,110 --> 00:00:52,430 false nëse vlera është jo në kashtë. 16 00:00:52,430 --> 00:00:59,060 Dhe atëherë ne jemi edhe zbatimin lloj, të cilat llojet array quajtur vlerat. 17 00:00:59,060 --> 00:01:01,120 Pra, le të trajtuar kërkim. 18 00:01:01,120 --> 00:01:04,550 >> Kërko zbatohet aktualisht si një kërkim linear. 19 00:01:04,550 --> 00:01:06,620 Por ju mund të bëni shumë më mirë se kaq. 20 00:01:06,620 --> 00:01:11,610 Kërko lineare zbatohet në O të n kohë, e cila është mjaft i ngadalshëm, edhe pse 21 00:01:11,610 --> 00:01:14,920 mund të kërkoni çdo listë që i është dhënë. 22 00:01:14,920 --> 00:01:21,190 Detyra jote është për të zbatuar kërko binar, i cili ka drejtuar kohë o të log n. 23 00:01:21,190 --> 00:01:22,200 Kjo është shumë e shpejtë. 24 00:01:22,200 --> 00:01:24,240 >> Por ka një kusht. 25 00:01:24,240 --> 00:01:28,910 Kërko Binary mund të kërkoni vetëm përmes listave të para-renditura. 26 00:01:28,910 --> 00:01:31,450 Pse është kjo? 27 00:01:31,450 --> 00:01:33,690 E pra, le të shikojmë një shembull. 28 00:01:33,690 --> 00:01:37,350 Duke pasur parasysh një sërë vlerash, kashtë, ne do të jetë në kërkim 29 00:01:37,350 --> 00:01:41,510 për një gjilpërë, dhe në këtë shembull, numër i plotë 3. 30 00:01:41,510 --> 00:01:45,220 >> Mënyra se kërkimi binar punon është se krahasojmë vlerën e mesme të 31 00:01:45,220 --> 00:01:49,430 array me gjilpërë, shumë si se si ne u hap një libër telefoni në mes 32 00:01:49,430 --> 00:01:51,720 faqe në Javën 0. 33 00:01:51,720 --> 00:01:55,710 Pra, pasi krahasuar vlerën e mesme të gjilpërë, ju mund të hidhni ose 34 00:01:55,710 --> 00:01:59,620 majtas ose gjysmën drejta e array duke forcuar kufijtë e tu. 35 00:01:59,620 --> 00:02:04,450 Në këtë rast, që nga 3, gjilpërë tonë, është më pak se 10, vlera mesatare, 36 00:02:04,450 --> 00:02:07,060 drejta e lidhur mund të ulet. 37 00:02:07,060 --> 00:02:09,470 >> Por të përpiqet për të bërë kufijtë e tu sa i ngushtë të jetë e mundur. 38 00:02:09,470 --> 00:02:12,690 Nëse vlera e mesme nuk është gjilpërë, atëherë ju e dini që ju nuk keni nevojë për të 39 00:02:12,690 --> 00:02:14,070 të përfshijë atë në kërkimin tuaj. 40 00:02:14,070 --> 00:02:18,390 Pra, e drejta juaj i detyruar mund të forcojë caqeve kërko vetëm një grimcë më shumë, 41 00:02:18,390 --> 00:02:22,840 dhe kështu me radhë e kështu me radhë, deri sa ju gjeni gjilpërë tuaj. 42 00:02:22,840 --> 00:02:24,580 >> Pra, çfarë e bën pseudo Kodi duken si? 43 00:02:24,580 --> 00:02:28,980 E pra, ndërsa ne jemi ende duke kërkuar nëpërmjet lista dhe ende kanë 44 00:02:28,980 --> 00:02:33,540 elemente për të parë në, kemi marrë në qendër i listës dhe krahasoni se 45 00:02:33,540 --> 00:02:36,020 Vlera e mesme në gjilpërë tonë. 46 00:02:36,020 --> 00:02:38,380 Në qoftë se ata janë të barabartë, atëherë kjo do të thotë ne kemi gjetur gjilpërë, dhe ne mund të 47 00:02:38,380 --> 00:02:40,160 kthim i vërtetë. 48 00:02:40,160 --> 00:02:43,940 >> Përndryshe, nëse gjilpëra është më pak se vlera e mesme, atëherë kjo do të thotë që ne 49 00:02:43,940 --> 00:02:48,350 mund të hidhni gjysmën e duhur dhe vetëm kërkoni në anën e majtë të array. 50 00:02:48,350 --> 00:02:51,860 Përndryshe, ne do të kërko anën e djathtë të vektorit. 51 00:02:51,860 --> 00:02:55,470 Dhe në fund, nëse ju nuk keni ndonjë më shumë elemente lënë për të kërkuar, por ju 52 00:02:55,470 --> 00:02:58,030 nuk kanë gjetur gjilpërë tuaj ende, atëherë ju kthimit të rreme. 53 00:02:58,030 --> 00:03:02,960 Sepse gjilpërë patjetër nuk është në kashtë. 54 00:03:02,960 --> 00:03:06,200 >> Tani, një gjë zoti për këtë pseudo Kodi në kërkim binar është se ajo mund të 55 00:03:06,200 --> 00:03:11,000 të interpretohet si ose një përsëritës ose zbatimin recursive. 56 00:03:11,000 --> 00:03:14,900 Pra, kjo do të ishte gjithkund rekursive në qoftë se ju të quajtur funksionin e kërkimit në kërkim 57 00:03:14,900 --> 00:03:18,400 të funksionojë në të dyja gjysmën e vektorit. 58 00:03:18,400 --> 00:03:20,750 Ne do të mbulojë recursion pak më vonë në kurs. 59 00:03:20,750 --> 00:03:23,210 Por e di se ajo është një opsion në qoftë se ju dëshironi të provoni. 60 00:03:23,210 --> 00:03:24,460