1 00:00:00,000 --> 00:00:08,532 >> [MUSIC Playing] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA CHAN: Gjëja e parë që ju mund Njoftimi në lidhje me gjeni është se ne tashmë 3 00:00:12,060 --> 00:00:13,450 kanë Kodi shkruar për ne. 4 00:00:13,450 --> 00:00:15,160 Kjo quhet kod shpërndarjes. 5 00:00:15,160 --> 00:00:18,000 Pra, ne nuk jemi vetëm shkrim e jona kodin nga e para më. 6 00:00:18,000 --> 00:00:22,800 Më saktë, ne jemi duke plotësuar voids në disa kodin para-ekzistuese. 7 00:00:22,800 --> 00:00:27,790 >> Programi find.c bën për numrat për të mbushur kashtë, kërkon 8 00:00:27,790 --> 00:00:32,189 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:32,189 --> 00:00:35,590 kërkimi, funksionet e përcaktuar në helpers.c. 10 00:00:35,590 --> 00:00:37,670 Pra find.c është shkruar tashmë. 11 00:00:37,670 --> 00:00:40,770 Puna juaj është për të shkruar ndihmëtarë. 12 00:00:40,770 --> 00:00:41,870 >> Pra, çfarë po bëjmë? 13 00:00:41,870 --> 00:00:44,210 Ne jemi duke zbatuar dy funksione. 14 00:00:44,210 --> 00:00:49,030 Search, e cila jep true nëse një vlerë e është gjetur në kashtë, duke u kthyer 15 00:00:49,030 --> 00:00:51,370 false nëse vlera është jo në kashtë. 16 00:00:51,370 --> 00:00:57,990 Dhe atëherë ne jemi edhe zbatimin lloj të cilat llojet array quajtur vlerat. 17 00:00:57,990 --> 00:00:59,960 >> Pra, le të trajtuar kërkim. 18 00:00:59,960 --> 00:01:04,560 Kërko aktualisht është zbatuar si një kërko lineare, por ju mund të bëni shumë më të 19 00:01:04,560 --> 00:01:05,550 më mirë se kaq. 20 00:01:05,550 --> 00:01:09,910 Kërko linear është zbatuar në O kohe N, i cili është mjaft ngadalshëm. 21 00:01:09,910 --> 00:01:13,850 Edhe pse, ajo mund të kërkoni ndonjë listë jepet. 22 00:01:13,850 --> 00:01:20,130 Detyra jote është për të zbatuar kërko binar, i cili ka drejtuar kohë o të log n. 23 00:01:20,130 --> 00:01:21,130 Kjo është shumë e shpejtë. 24 00:01:21,130 --> 00:01:23,170 >> Por ka një kusht. 25 00:01:23,170 --> 00:01:27,600 Kërko Binary mund të kërkoni vetëm përmes listave të para-renditura. 26 00:01:27,600 --> 00:01:30,370 Pse është kjo? 27 00:01:30,370 --> 00:01:32,620 >> E pra le të shikojmë një shembull. 28 00:01:32,620 --> 00:01:36,280 Duke pasur parasysh një sërë vlerash, kashtë, ne do të jetë në kërkim 29 00:01:36,280 --> 00:01:37,130 për një gjilpërë. 30 00:01:37,130 --> 00:01:40,460 Dhe në këtë shembull, numër i plotë tre. 31 00:01:40,460 --> 00:01:44,130 Mënyra se kërkimi binar punon është se krahasojmë vlerën e mesme të 32 00:01:44,130 --> 00:01:48,370 array me gjilpërë, shumë si se si ne kemi hapur një Phonebook në mes 33 00:01:48,370 --> 00:01:50,660 faqe në javë zero. 34 00:01:50,660 --> 00:01:54,650 >> Pra, pasi krahasuar vlerën e mesme të gjilpërë, ju mund të hidhni ose 35 00:01:54,650 --> 00:01:58,530 majtas ose gjysmën drejta e array duke forcuar kufijtë e tu. 36 00:01:58,530 --> 00:02:03,390 Në këtë rast, që nga tre, gjilpërë tonë, është më pak se 10, vlera mesatare, 37 00:02:03,390 --> 00:02:05,990 drejta e lidhur mund të ulet. 38 00:02:05,990 --> 00:02:08,400 Por të përpiqet për të bërë kufijtë e tu sa i ngushtë të jetë e mundur. 39 00:02:08,400 --> 00:02:11,630 Nëse vlera e mesme nuk është gjilpërë, atëherë ju e dini që ju nuk keni nevojë për të 40 00:02:11,630 --> 00:02:13,010 të përfshijë atë në kërkimin tuaj. 41 00:02:13,010 --> 00:02:17,310 Pra, ju jeni të drejtë lidhur mund të forcojë caqeve kërko vetëm një grimcë më shumë, 42 00:02:17,310 --> 00:02:21,770 dhe kështu me radhë e kështu me radhë deri sa të ju gjeni gjilpërë tuaj. 43 00:02:21,770 --> 00:02:23,480 >> Pra, ajo që duket si pseudokod? 44 00:02:23,480 --> 00:02:28,420 E pra, ndërsa ne jemi ende në kërkim përmes lista dhe ende kanë elemente të 45 00:02:28,420 --> 00:02:33,690 shikoni në, kemi marrë mes të listës, dhe krahasoni se vlera e mesme të 46 00:02:33,690 --> 00:02:34,950 gjilpërë tonë. 47 00:02:34,950 --> 00:02:37,310 Në qoftë se ata janë të barabartë, atëherë kjo do të thotë ne kemi gjetur gjilpërën dhe ne mund 48 00:02:37,310 --> 00:02:38,990 kthim i vërtetë. 49 00:02:38,990 --> 00:02:42,870 >> Përndryshe, nëse gjilpëra është më pak se vlera e mesme, atëherë kjo do të thotë që ne 50 00:02:42,870 --> 00:02:47,280 mund të hidhni gjysmën e duhur, dhe vetëm kërkoni në anën e majtë të array. 51 00:02:47,280 --> 00:02:51,090 Përndryshe, ne do të kërko anën e djathtë të vektorit. 52 00:02:51,090 --> 00:02:54,410 Dhe në fund, nëse ju nuk keni ndonjë më shumë elemente lënë për të kërkuar, por ju 53 00:02:54,410 --> 00:02:58,050 nuk kanë gjetur gjilpërë tuaj akoma, atëherë ju kthimit të rreme sepse gjilpërë 54 00:02:58,050 --> 00:03:01,890 definitivisht nuk është në kashtë. 55 00:03:01,890 --> 00:03:05,270 >> Tani një gjë zoti për këtë pseudokod në kërkim binar është se ajo mund të jetë e 56 00:03:05,270 --> 00:03:09,940 interpretohet si ose një përsëritës ose zbatimin recursive. 57 00:03:09,940 --> 00:03:13,810 Pra, kjo do të ishte gjithkund rekursive në qoftë se ju të quajtur funksionin e kërkimit në kërkim 58 00:03:13,810 --> 00:03:17,350 të funksionojë në të dyja gjysmën e vektorit. 59 00:03:17,350 --> 00:03:21,030 Ne do të mbulojë recursion pak më vonë në Sigurisht, por e di se ajo është një 60 00:03:21,030 --> 00:03:24,190 opsion në qoftë se ju dëshironi të provoni. 61 00:03:24,190 --> 00:03:26,030 >> Tani le të shohim në lloj. 62 00:03:26,030 --> 00:03:30,750 Renditur merr një rrjet dhe numër i plotë n, e cila është madhësia e array. 63 00:03:30,750 --> 00:03:34,030 Tani ka lloje të ndryshme të ndryshme në terezi, dhe ju mund të shikoni në disa 64 00:03:34,030 --> 00:03:36,370 pantallona të shkurtra për popull dhe shpjegime. 65 00:03:36,370 --> 00:03:39,580 Lloji kthimit për tonë Funksioni lloj është e pavlefshme. 66 00:03:39,580 --> 00:03:43,580 Kështu që do të thotë se ne nuk do të kthehen çdo rrjet nga lloji. 67 00:03:43,580 --> 00:03:48,140 Ne jemi të vërtetë do të ndryshojë shumë array që u miratua në ne. 68 00:03:48,140 --> 00:03:52,290 >> Dhe kjo është e mundur për shkak se vargjeve janë kaluar duke iu referuar në C. Tani ne do të 69 00:03:52,290 --> 00:03:55,290 shih më shumë për këtë më vonë, por Dallimi thelbësor në mes të kalimit 70 00:03:55,290 --> 00:03:59,340 në diçka si një numër të plotë dhe kalimin në një rrjet, është se kur ju 71 00:03:59,340 --> 00:04:03,490 të kalojë në një numër të plotë, C është vetëm do të të bëjë një kopje të këtij numër të plotë dhe të kalojë 72 00:04:03,490 --> 00:04:04,450 ajo te funksionit. 73 00:04:04,450 --> 00:04:08,530 Ndryshueshme origjinale nuk do të ndryshohet një herë funksioni është përfunduar. 74 00:04:08,530 --> 00:04:12,480 Me një grup, nga ana tjetër, është nuk do të bëjë një kopje, dhe ju do të 75 00:04:12,480 --> 00:04:17,910 në të vërtetë të redaktimi vetë shumë array. 76 00:04:17,910 --> 00:04:21,269 >> Pra, një lloj lloji është lloj përzgjedhje. 77 00:04:21,269 --> 00:04:24,750 Zgjedhja lloj punon duke filluar nga ora në fillim, dhe pastaj ju iterate 78 00:04:24,750 --> 00:04:26,820 mbi dhe për të gjetur elementin më të vogël. 79 00:04:26,820 --> 00:04:30,710 Dhe pastaj ju bie në ujdi që më të vogël element me një të parë. 80 00:04:30,710 --> 00:04:34,360 Dhe pastaj ju hyni në elementin e dytë , Të gjejnë tjetër më të vogël 81 00:04:34,360 --> 00:04:38,320 element, dhe pastaj shkëmbim se me Elementi i dytë në grup, sepse 82 00:04:38,320 --> 00:04:41,100 elementi i parë zgjidhet tashmë. 83 00:04:41,100 --> 00:04:45,370 Dhe kështu atëherë ju të vazhdojë për çdo element në identifikimin më të vogël 84 00:04:45,370 --> 00:04:47,690 Vlera dhe shkëmbejnë atë. 85 00:04:47,690 --> 00:04:53,460 >> Sepse unë barabartë 0, elementin e parë të n minus 1, ju do të jeni për të krahasuar 86 00:04:53,460 --> 00:04:57,820 çdo vlerë tjetër pas kësaj dhe për të gjetur indeksi i vlerës minimale. 87 00:04:57,820 --> 00:05:02,520 Pasi ju të gjeni indeksin e vlerës minimale, ju mund të bie në ujdi se vlera e array 88 00:05:02,520 --> 00:05:05,930 minimale dhe array I. 89 00:05:05,930 --> 00:05:09,760 >> Një tjetër lloj i lloj që ju mund të zbatuar është flluskë lloj. 90 00:05:09,760 --> 00:05:14,380 Kështu iterates flluskë lloj mbi listën e krahasuar elementet ngjitur dhe 91 00:05:14,380 --> 00:05:17,720 shkëmbejnë elementet që janë në mënyrë të gabuar. 92 00:05:17,720 --> 00:05:22,380 Dhe në këtë mënyrë, elementi më i madh do flluskë deri në fund. 93 00:05:22,380 --> 00:05:28,070 Dhe lista të zgjidhet një herë jo më shumë elemente janë swapped. 94 00:05:28,070 --> 00:05:31,920 >> Pra, ata janë dy shembuj të lloj algoritme që ju mund të zbatojë për 95 00:05:31,920 --> 00:05:33,230 programi gjeni. 96 00:05:33,230 --> 00:05:37,350 Pasi të keni mbaruar lloj, dhe ju keni bërë kërkimin, ju jeni mbaruar. 97 00:05:37,350 --> 00:05:39,720 Emri im është Zamyla, dhe kjo është CS50. 98 00:05:39,720 --> 00:05:46,987 >> [MUSIC Playing]