1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Bölmə 3 - Daha Rahat] 2 00:00:02,570 --> 00:00:05,070 [Rob Bowden - Harvard Universiteti] 3 00:00:05,070 --> 00:00:07,310 >> [Bu CS50 edir. - CS50.TV] 4 00:00:07,310 --> 00:00:12,700 >> Belə ki, ilk sual qəribə mətni olunur. 5 00:00:12,700 --> 00:00:17,480 Gdb daha çox xüsusi bir proqram "debug", lakin imkan verir, bu nə imkan vermir? 6 00:00:17,480 --> 00:00:22,590 Mən bir cavab olacaq və mən məhz gözlənilir nə bilmirəm 7 00:00:22,590 --> 00:00:27,910 Mən bu xətləri boyunca onun bir təxmin edirəm siz addım-addım təmin edir 8 00:00:27,910 --> 00:00:31,540 ilə qarşılıqlı, proqram vasitəsilə gəzmək, dəyişiklik dəyişənlərin, bütün bu şeylər - 9 00:00:31,540 --> 00:00:34,270 əsasən tamamilə proqramı icrasına nəzarət 10 00:00:34,270 --> 00:00:38,410 və proqramın icrasına hər hansı bir hissəsi yoxlayın. 11 00:00:38,410 --> 00:00:43,030 Belə ki, həmin xüsusiyyətlər şeyi debug imkan verir. 12 00:00:43,030 --> 00:00:44,830 Okay. 13 00:00:44,830 --> 00:00:50,520 Niyə ikili axtarış bir sıra sıralanır tələb edir? 14 00:00:50,520 --> 00:00:53,360 Kim ki, cavab istəyir? 15 00:00:56,120 --> 00:01:00,070 [Tələbə] Əgər sıralanır deyil, əgər iş deyil, çünki. >> Bəli. [Gülüş] 16 00:01:00,070 --> 00:01:04,910 O sıralanır deyil, onda yarı bölmək mümkün deyil 17 00:01:04,910 --> 00:01:07,850 və sol ki, hər şeyi bilmək az və sağ hər şey 18 00:01:07,850 --> 00:01:10,490 orta dəyəri böyükdür. 19 00:01:10,490 --> 00:01:12,790 Belə ki sıralanır lazımdır. 20 00:01:12,790 --> 00:01:14,170 Okay. 21 00:01:14,170 --> 00:01:17,570 Nə kvadrat n O bubble sırala edir? 22 00:01:17,570 --> 00:01:23,230 Hər kəs ilk bubble sırala nə çox tez yüksək səviyyəli xülasə vermək istəyir? 23 00:01:25,950 --> 00:01:33,020 [Tələbə] Siz əsasən hər element vasitəsilə getmək və ilk bir neçə elementləri işarələyin. 24 00:01:33,020 --> 00:01:37,150 Onlar sizin onları dəyişdirmək harada bitti, onda növbəti bir neçə elementlər və s yoxlayın. 25 00:01:37,150 --> 00:01:40,770 Əgər sonunda çatmaq zaman, sonra ən böyük element sonunda yerləşir bilirik ki, 26 00:01:40,770 --> 00:01:42,750 belə ki, bir zaman siz keçir saxlamaq ki, ignore 27 00:01:42,750 --> 00:01:48,490 və hər dəfə sizə heç bir dəyişikliklər etmək qədər bir az element yoxlamaq lazımdır. >> Bəli. 28 00:01:48,490 --> 00:01:58,470 Onun tərəfində array çevirmek əgər belə aşağı və, çünki bubble sırala şaquli deyirlər 29 00:01:58,470 --> 00:02:03,100 sonra böyük dəyərləri alt endirmək və kiçik dəyərlər üst bubble qədər olacaq. 30 00:02:03,100 --> 00:02:05,210 Bu onun adı var nə var. 31 00:02:05,210 --> 00:02:08,220 Və Bəli, yalnız keçir. 32 00:02:08,220 --> 00:02:11,190 Siz böyük dəyər dəyişdirmə, serialın keçir saxlamaq 33 00:02:11,190 --> 00:02:14,040 alt ən böyük dəyərlər almaq üçün. 34 00:02:14,040 --> 00:02:17,500 >> Nə kvadrat n Ey edir? 35 00:02:18,690 --> 00:02:24,620 Birincisi, hər kəs o n O kvadrat görə demək istəyir? 36 00:02:24,620 --> 00:02:28,760 [Tələbə] hər run üçün n dəfə gedir, çünki. 37 00:02:28,760 --> 00:02:32,100 Siz yalnız, siz aşağı ən böyük element bütün yolu qəbul etdiyiniz arxayın ola bilərsiniz 38 00:02:32,100 --> 00:02:35,230 sonra bir çox elementləri üçün təkrar var. >> Bəli. 39 00:02:35,230 --> 00:02:41,800 Belə böyük O deməkdir və nə böyük Omega vasitələri nə unutmayın. 40 00:02:41,800 --> 00:02:50,560 Böyük O həqiqətən çalıştırabilirsiniz necə yavaş dair bağlı yuxarı kimi. 41 00:02:50,560 --> 00:02:58,990 Beləliklə kvadrat n bu O dedi ki, n Ey deyil və ya başqa run bilər 42 00:02:58,990 --> 00:03:02,640 xətti vaxtında, lakin n Cubed Ey edir 43 00:03:02,640 --> 00:03:06,390 o n Cubed Ey ayrılır, çünki. 44 00:03:06,390 --> 00:03:12,300 Bu kare n Ey ilə həmsərhəddir edir, onda n Cubed də əhatə edir. 45 00:03:12,300 --> 00:03:20,280 Belə ki, kvadrat n və mütləq ən pis halda kvadrat n daha yaxşı edə bilməz 46 00:03:20,280 --> 00:03:22,830 bu kare N O nə edir. 47 00:03:22,830 --> 00:03:31,200 Belə ki, n kvadrat olmaq üçün gəlir necə yüngül riyaziyyat görmək 48 00:03:31,200 --> 00:03:40,530 biz siyahısında beş şey varsa, ilk dəfə neçə svopları biz potensial etmək lazımdır bilər 49 00:03:40,530 --> 00:03:47,170 Bu almaq üçün? Nin həqiqətən yalnız edək - 50 00:03:47,170 --> 00:03:52,040 Neçə svopları biz array vasitəsilə bubble sırala ilk run etmək üçün gedir? 51 00:03:52,040 --> 00:03:53,540 [Tələbə] n - 1. >> Bəli. 52 00:03:53,540 --> 00:03:58,340 >> 1 - 5 elementlər var, biz n etmək lazımdır olacaq. 53 00:03:58,340 --> 00:04:01,100 Sonra ikinci bir neçə svopları biz etmək üçün gedir? 54 00:04:01,100 --> 00:04:03,440 [Tələbə] n - 2. >> Bəli. 55 00:04:03,440 --> 00:04:11,640 Və üçüncü n olacaq - 3, sonra rahatlığı üçün mən son iki yazacaq 56 00:04:11,640 --> 00:04:15,270 sonra biz 2 svopları və 1 mübadilə etmək lazımdır olacaq. 57 00:04:15,270 --> 00:04:19,899 Mən son bir və ya həqiqətən nə etmək lazımdır bilər danışarlar. 58 00:04:19,899 --> 00:04:22,820 Bir svop mı? Bilmirəm. 59 00:04:22,820 --> 00:04:26,490 Belə ki, bu ümumi svopları məbləğləri və ya etmək üçün ən azı müqayisə edir. 60 00:04:26,490 --> 00:04:29,910 Siz dəyişdirmək bile, hələ dəyərləri müqayisə etmək lazımdır. 61 00:04:29,910 --> 00:04:33,910 Belə ki, n var - serialın vasitəsilə ilk run 1 müqayisə. 62 00:04:33,910 --> 00:04:42,050 Bu şeyi yeniden varsa, hər şeyi gözəl stack up belə nın həqiqətən altı şeyi edək 63 00:04:42,050 --> 00:04:44,790 və sonra, 2 1 3 edəcəyik. 64 00:04:44,790 --> 00:04:49,910 Belə ki, yalnız bu məbləğdə rearranging, biz etmək neçə müqayisə görmək istəyirəm 65 00:04:49,910 --> 00:04:52,700 bütün alqoritm edir. 66 00:04:52,700 --> 00:04:56,550 Biz aşağı burada, bu uşaqlar gətirmək əgər, 67 00:04:56,550 --> 00:05:07,470 sonra biz hələ də orada idi lakin çox müqayisə cəmlənməsi edirik. 68 00:05:07,470 --> 00:05:13,280 Lakin biz bu yekunlaşdırmaq və bu yekun və bu yekun əgər, 69 00:05:13,280 --> 00:05:18,130 hələ də eyni problem var. Biz yalnız xüsusi qruplar edib. 70 00:05:18,130 --> 00:05:22,400 >> Belə ki, indi biz 3 n-nin cəmlənməsi edirik. Bu yalnız 3 n-nin deyil. 71 00:05:22,400 --> 00:05:27,650 Bu həmişə n / 2 n nin olacaq. 72 00:05:27,650 --> 00:05:29,430 Belə ki, burada biz 6 üçün baş verir. 73 00:05:29,430 --> 00:05:34,830 10 şeylər idi, onda biz şeyi 5 müxtəlif cüt üçün qruplaşdırılması edə 74 00:05:34,830 --> 00:05:37,180 və n + n + n + n + n son. 75 00:05:37,180 --> 00:05:45,840 Beləliklə, siz həmişə n / 2 n nin almaq olacaq və bu, biz n kvadrat / 2 onu jot lazımdır. 76 00:05:45,840 --> 00:05:48,890 Və belə gəlmək olur ki, yarısı amil belə olsa 77 00:05:48,890 --> 00:05:54,190 serialın üzərində hər iteration vasitəsilə biz 1 az müqayisə ki, çünki 78 00:05:54,190 --> 00:05:58,040 belə ki, 2-dən çox almaq necə, ancaq hələ kvadrat n. 79 00:05:58,040 --> 00:06:01,650 Biz yarım daimi amil haqqında qayğı yoxdur. 80 00:06:01,650 --> 00:06:07,760 Bu kimi böyük O məhsullarının bir çox riyaziyyat bu cür bunu yalnız cür əsaslanır Belə ki, 81 00:06:07,760 --> 00:06:12,260 hesab məbləğləri və həndəsi silsilə stuff bunu, 82 00:06:12,260 --> 00:06:17,750 lakin bu, əlbəttə onların ən sevimli sadə edir. 83 00:06:17,750 --> 00:06:19,290 Okay. 84 00:06:19,290 --> 00:06:24,430 Nə durub sırala n Omega edir? Omega nə deməkdir? 85 00:06:24,430 --> 00:06:27,730 [Dəfə danışan iki tələbələri - anlaşılmaz] >> Bəli. 86 00:06:27,730 --> 00:06:30,630 Omega siz aşağı bağlı kimi hesab edə bilər. 87 00:06:30,630 --> 00:06:36,550 >> Belə ki, durub sırala alqoritm necə səmərəli olursa olsun, 88 00:06:36,550 --> 00:06:41,810 asılı olmayaraq qəbul ki, siyahı, həmişə ən azı n şeyi müqayisə edir 89 00:06:41,810 --> 00:06:44,620 və ya n şeyə təkrarlamaq var. 90 00:06:44,620 --> 00:06:47,280 Niyə ki? 91 00:06:47,280 --> 00:06:51,190 [Tələbə] Çünki siyahısı artıq çeşidlənir, onda vasitəsilə ilk iteration 92 00:06:51,190 --> 00:06:54,080 siz yalnız ilk element ən ki, təmin edə bilər 93 00:06:54,080 --> 00:06:56,490 və ikinci iteration yalnız ilk iki təmin edə bilər 94 00:06:56,490 --> 00:07:00,010 siz siyahısına qalan çeşidlənir bilirik ki, çünki. >> Bəli. 95 00:07:00,010 --> 00:07:08,910 Siz ən azı bir tam sıralanır siyahısına keçmək Əgər bütün elementləri üzərində getmək 96 00:07:08,910 --> 00:07:12,180 heç bir şey ətrafında köçürülüb lazımdır görmək. 97 00:07:12,180 --> 00:07:14,720 Belə ki, siyahıda keçən və oh, bu, artıq çeşidlənir söyləyərək 98 00:07:14,720 --> 00:07:18,240 siz sıralanır oldu bilmək üçün hər element yoxlamaq qədər mümkün deyil 99 00:07:18,240 --> 00:07:20,660 onlar sıralanır üçün olduğunu görürük. 100 00:07:20,660 --> 00:07:25,290 Belə ki, durub sırala dair bağlı alt n Omega edir. 101 00:07:25,290 --> 00:07:28,210 Ən pis halda, birləşmə növ zaman nə qaçış var 102 00:07:28,210 --> 00:07:31,390 ən pis halda yenə böyük O olan? 103 00:07:31,390 --> 00:07:37,660 Belə ki, ən pis halda, birləşmə sort necə çalışır? 104 00:07:42,170 --> 00:07:43,690 [Tələbə] N log n. >> Bəli. 105 00:07:43,690 --> 00:07:49,990 Sürətli ümumi çeşidlənməsi alqoritmlərin n log n. Siz daha yaxşı edə bilməz. 106 00:07:51,930 --> 00:07:55,130 >> Var xüsusi hallarda və biz bu gün vaxt varsa - lakin biz yəqin ki, won't - 107 00:07:55,130 --> 00:07:59,330 biz n log n daha yaxşı ki, bir görürdü. 108 00:07:59,330 --> 00:08:04,050 Amma ümumi halda, siz n log n daha yaxşı edə bilməz. 109 00:08:04,050 --> 00:08:09,680 Və daxil sort siz n log n ki, bu kurs üçün bilmək lazımdır biri olur. 110 00:08:09,680 --> 00:08:13,260 Və biz, həqiqətən, bu gün həyata olacaq. 111 00:08:13,260 --> 00:08:18,070 Və, nəhayət, artıq üç cümlə, necə seçim sırala çalışır? 112 00:08:18,070 --> 00:08:20,370 Kimsə cavab istəyirəm varmı, mən sizin cümlələr saymaq lazımdır 113 00:08:20,370 --> 00:08:22,390 çünki 3 üzərində getmək əgər - 114 00:08:25,530 --> 00:08:28,330 Hər kəs seçilməsi cür xatırlamaq varmı? 115 00:08:31,280 --> 00:08:37,809 Seçim sırala yalnız adı yadda adətən olduqca asandır. 116 00:08:37,809 --> 00:08:45,350 Siz yalnız array üzərində təkrarlamaq, nə ən böyük dəyəri və ya kiçik tapmaq - 117 00:08:45,350 --> 00:08:47,290 Daxil çeşidlənməsi etdiyiniz nə üçün 118 00:08:47,290 --> 00:08:50,750 Belə ki, biz kiçik olan böyük üçün çeşidlənməsi edirik deyək. 119 00:08:50,750 --> 00:08:55,250 Siz minimum element nə axtarır, serialın üzərində təkrarlamaq 120 00:08:55,250 --> 00:08:59,750 seçin və sonra yalnız ilk növbədə nə onu dəyişdirmək. 121 00:08:59,750 --> 00:09:04,090 Və sonra serialın üzərində ikinci aşırımı da, yenə minimum element axtarmaq 122 00:09:04,090 --> 00:09:07,490 seçin və sonra ikinci mövqe nə ilə dəyişdirmək. 123 00:09:07,490 --> 00:09:10,650 Belə ki, yalnız toplama və minimum dəyərlər seçimi 124 00:09:10,650 --> 00:09:16,050 və serialın qarşısında onları daxil o çeşidlənir qədər. 125 00:09:19,210 --> 00:09:21,560 Ki Suallar? 126 00:09:21,560 --> 00:09:25,710 >> Bu qaçılmaz siz pset təqdim etdiyiniz zaman doldurmaq üçün formalarda görünür. 127 00:09:29,010 --> 00:09:32,360 Bu əsasən o cavab var. 128 00:09:32,360 --> 00:09:34,230 Okay, indi problemlər kodlaşdırma. 129 00:09:34,230 --> 00:09:40,140 Mən artıq e-poçt artıq göndəriləcək - hər kəs e-poçt almaq etmədikmi? Okay. 130 00:09:40,140 --> 00:09:46,630 Mən artıq, e-poçt artıq biz istifadə olacaq ki, yer göndəriləcək 131 00:09:46,630 --> 00:09:52,120 mənim adını basın əgər - belə mən aşağı ola gedirəm hesab 132 00:09:52,120 --> 00:09:57,170 Çünki geri r - Siz mənim adını basın əgər ancaq 2 dəyişiklikləri görürsünüz. 133 00:09:57,170 --> 00:10:02,650 Revision 1 Mən artıq sitemizi və məkanı nəzərə kodu yapışdırılır olacaq 134 00:10:02,650 --> 00:10:06,900 axtarış şey üçün siz həyata keçirilməsi üçün var olacaq. 135 00:10:06,900 --> 00:10:10,540 Və Revision 2 biz bundan sonra həyata keçirən cür şey olacaq. 136 00:10:10,540 --> 00:10:15,770 Beləliklə, siz mənim Revision 1 basın və oradan işləyə bilər. 137 00:10:17,350 --> 00:10:22,060 İndi biz ikili axtarış həyata istəyirəm. 138 00:10:22,060 --> 00:10:26,470 >> Hər kəs yalnız bir pseudocode yüksək səviyyədə izahat vermək istəyir 139 00:10:26,470 --> 00:10:31,440 nə biz axtarışı üçün var olacaq? Bəli. 140 00:10:31,440 --> 00:10:36,170 [Tələbə] Siz yalnız array ortasında almaq və aradığınız nə varsa bax 141 00:10:36,170 --> 00:10:38,650 daha az və ya daha çox. 142 00:10:38,650 --> 00:10:41,080 Və az varsa, siz az olan yarım getmək 143 00:10:41,080 --> 00:10:44,750 daha varsa və daha çox olan yarım getmək və təkrar ki, yalnız bir şey almaq qədər. 144 00:10:44,750 --> 00:10:46,570 [Bowden] Bəli. 145 00:10:46,570 --> 00:10:51,320 Bizim nömrələri array artıq çeşidlənir edək ki, 146 00:10:51,320 --> 00:10:57,190 və, belə ki, biz istifadə edə bilər və biz ilk yoxlamaq bilər o deməkdir ki, 147 00:10:57,190 --> 00:11:00,390 tamam, mən sayı 50 arıyorum. 148 00:11:00,390 --> 00:11:03,720 Mən orta getmək bilər. 149 00:11:03,720 --> 00:11:07,380 Orta, bu şeyi daha sıra zaman müəyyən etmək çətindir 150 00:11:07,380 --> 00:11:10,820 ancaq biz həmişə orta kəsmək lazımdır deyək. 151 00:11:10,820 --> 00:11:14,420 Belə ki, burada biz 8 şeylər var, belə ki, orta 16 olardı. 152 00:11:14,420 --> 00:11:17,330 50 arıyorum, belə ki, 50, 16-dən çox deyil. 153 00:11:17,330 --> 00:11:21,310 Belə ki, indi mən əsasən bu elementlər kimi array müalicə edə bilər. 154 00:11:21,310 --> 00:11:23,450 Mən 16-dan artıq hər şey tullamaq olar. 155 00:11:23,450 --> 00:11:27,440 İndi sıra yalnız bu 4 elementlər və mən deyirəm. 156 00:11:27,440 --> 00:11:31,910 Beləliklə, mən yenidən orta tapmaq istəyirsinizsə, bu 42 olacaq. 157 00:11:31,910 --> 00:11:34,730 42 50-dən az, belə ki, mən bu iki element tullamaq olar. 158 00:11:34,730 --> 00:11:36,890 Bu mənim qalan sıra edir. 159 00:11:36,890 --> 00:11:38,430 Mən orta tapmaq üçün gedirəm. 160 00:11:38,430 --> 00:11:42,100 Mən həmişə sol şeyi atmaq çünki mən, 50 pis nümunə oldu tahmin 161 00:11:42,100 --> 00:11:48,280 eyni ölçü ilə, əgər mən bir şey arıyorum 162 00:11:48,280 --> 00:11:52,100 və bu, hazırda da arıyorum element az deyil 163 00:11:52,100 --> 00:11:55,080 sonra sağ hər şey tullamaq gedirəm. 164 00:11:55,080 --> 00:11:58,150 Belə ki, indi biz həyata lazımdır. 165 00:11:58,150 --> 00:12:02,310 Biz ölçüsü keçmək lazımdır ki, görürsünüz. 166 00:12:02,310 --> 00:12:06,730 Biz də ağır kodu ölçüsü lazımdır bilməz. 167 00:12:06,730 --> 00:12:11,640 Ki canini qurtar əgər # define - 168 00:12:19,630 --> 00:12:21,430 Okay. 169 00:12:21,430 --> 00:12:27,180 Necə gözəl nömrələri array həcmi hazırda nə anlamaq olar? 170 00:12:27,180 --> 00:12:30,950 >> Nömrələri array neçə elementlər var? 171 00:12:30,950 --> 00:12:33,630 [Tələbə] Nömrələr, mötərizədə. Uzunluğu? 172 00:12:33,630 --> 00:12:36,600 [Bowden] C. Bu mövcud deyil 173 00:12:36,600 --> 00:12:38,580 Lazımdır. Uzunluğu. 174 00:12:38,580 --> 00:12:42,010 Diziler xüsusiyyətləri yoxdur, seriallarda heç uzunluğu əmlak var belə 175 00:12:42,010 --> 00:12:45,650 ki, yalnız bu olur Lakin uzun verəcək. 176 00:12:48,180 --> 00:12:51,620 [Tələbə] var nə qədər yaddaş baxın və nə qədər ilə bölmək - >> Bəli. 177 00:12:51,620 --> 00:12:55,810 Belə ki, necə biz var nə qədər yaddaş bilərsiniz? >> [Tələbə] Sizeof. >> Bəli, sizeof. 178 00:12:55,810 --> 00:13:01,680 Sizeof nömrələri serialın ölçüsü qayıtmaq niyyətində olan operatordur. 179 00:13:01,680 --> 00:13:10,060 Və lakin çox integers olacaq ki, bir dəfə tam həcmi var 180 00:13:10,060 --> 00:13:14,050 ki, həqiqətən up alaraq necə çox yaddaş var-ci ildən. 181 00:13:14,050 --> 00:13:17,630 Mən array şeyi sayı istəyirəm əgər, 182 00:13:17,630 --> 00:13:20,560 sonra mən tam həcmi ilə bölmək istəyirəm gedirəm. 183 00:13:22,820 --> 00:13:26,010 Okay. Belə ki, mənə burada ölçüsü keçmək imkan verir. 184 00:13:26,010 --> 00:13:29,430 Niyə bütün ölçüsü keçmək lazımdır? 185 00:13:29,430 --> 00:13:38,570 Niyə yalnız int ölçüsü burada edə bilməz = sizeof (ot tayası) / sizeof (int)? 186 00:13:38,570 --> 00:13:41,490 Niyə bu işləmir? 187 00:13:41,490 --> 00:13:44,470 [Tələbə] Bu qlobal dəyişən deyil. 188 00:13:44,470 --> 00:13:51,540 [Bowden] ot tayası var və biz ot tayası kimi nömrələri keçən edirik 189 00:13:51,540 --> 00:13:54,700 və bu gəlmək ne foreshadowing növü. Bəli. 190 00:13:54,700 --> 00:14:00,170 [Tələbə] ot tayası yalnız ona istinad edir, belə ki, arayış nə qədər böyük qayıtmaq istəyirəm. 191 00:14:00,170 --> 00:14:02,150 Bəli. 192 00:14:02,150 --> 00:14:09,000 Mən, həqiqətən, doğru hələ yığını gördüm ki, mühazirə şübhə? 193 00:14:09,000 --> 00:14:11,270 Biz yalnız bu barədə danışıq etdik. 194 00:14:11,270 --> 00:14:16,090 Sizin dəyişənlərin bütün saxlanılır gedir yerləşir Belə yığını deyil. 195 00:14:16,090 --> 00:14:19,960 >> Yerli dəyişənlər üçün ayrılmış ki, hər hansı bir yaddaş yığını gedir 196 00:14:19,960 --> 00:14:24,790 və hər bir funksiyası yığını öz kosmik alır, öz yığını çərçivəsində bu deyirlər edir. 197 00:14:24,790 --> 00:14:31,590 Belə ki, əsas onun yığını çərçivəsində malikdir və daxili, bu nömrələr sıra mövcud gedir 198 00:14:31,590 --> 00:14:34,270 və ölçüsü sizeof (ədəd) ilə olacaq. 199 00:14:34,270 --> 00:14:38,180 Bu elementlərin ölçüsü bölünür nömrələri ölçüsü olacaq 200 00:14:38,180 --> 00:14:42,010 lakin əsas nin yığını çərçivəsində bütün həyatını ki. 201 00:14:42,010 --> 00:14:45,190 Axtarış zəng zaman, axtarış, öz yığını çərçivəsində olur 202 00:14:45,190 --> 00:14:48,840 öz kosmik onun yerli dəyişənlərin bütün saxlamaq üçün. 203 00:14:48,840 --> 00:14:56,420 Amma bu arqumentləri - belə ot tayası bütün bu array surəti deyil. 204 00:14:56,420 --> 00:15:00,990 Axtarış bir surəti kimi bütün array keçmək yoxdur. 205 00:15:00,990 --> 00:15:04,030 Bu yalnız array istinad keçir. 206 00:15:04,030 --> 00:15:11,470 Belə ki, axtarış bu istinad vasitəsilə bu nömrələri istifadə edə bilərsiniz. 207 00:15:11,470 --> 00:15:17,100 O, yenə də əsas nin yığını çərçivə içərisində yaşamaq şeylər daxil oldu 208 00:15:17,100 --> 00:15:22,990 lakin əsasən, biz göstəricilərinə almaq zaman ki, tezliklə olmalıdır 209 00:15:22,990 --> 00:15:24,980 bu göstəricilər nə edir. 210 00:15:24,980 --> 00:15:29,400 Pointers yalnız şeyə istinad edir, və siz hər şeyi əldə etmək göstəricilərinə istifadə edə bilərsiniz 211 00:15:29,400 --> 00:15:32,030 digər şeylər "yığını çərçivəsində var. 212 00:15:32,030 --> 00:15:37,660 Ədəd əsas yerli olsa Belə ki, biz hələ də bu göstərici vasitəsilə əldə edə bilərsiniz. 213 00:15:37,660 --> 00:15:41,770 Amma bu yalnız bir göstərici var və yalnız bir istinad var-ci ildən, 214 00:15:41,770 --> 00:15:45,040 sizeof (ot tayası) yalnız istinad özü ölçüsü qaytarır. 215 00:15:45,040 --> 00:15:47,950 Bu işarə oldu şey həcmi qayıtmaq deyil. 216 00:15:47,950 --> 00:15:51,110 Bu nömrələr faktiki ölçüsü qayıtmaq deyil. 217 00:15:51,110 --> 00:15:55,660 Biz bunu istəyirik və bu iş etmək niyyətində deyil. 218 00:15:55,660 --> 00:15:57,320 >> Ki Suallar? 219 00:15:57,320 --> 00:16:03,250 Pointers gəlmək həftə daha çox Qori ətraflı daxil getdi olacaq. 220 00:16:06,750 --> 00:16:13,740 Niyə görmək şeyi, ən axtarış şeyi və ya sort çox şey, və bu 221 00:16:13,740 --> 00:16:16,990 onlar demək olar ki, bütün serialın faktiki ölçüsü lazımdır olacaq 222 00:16:16,990 --> 00:16:20,440 C, çünki biz serialın ölçüsü nə heç bir fikrim yoxdur. 223 00:16:20,440 --> 00:16:22,720 Siz özünüz daxil keçmək lazımdır 224 00:16:22,720 --> 00:16:27,190 Yalnız istinad keçən edirik, çünki özünüz bütün array keçmək bilməz 225 00:16:27,190 --> 00:16:30,390 və istinad olan ölçüsü ala bilmir. 226 00:16:30,390 --> 00:16:32,300 Okay. 227 00:16:32,300 --> 00:16:38,160 Belə ki, indi biz əvvəl izah nə həyata istəyirəm. 228 00:16:38,160 --> 00:16:41,530 Siz bir dəqiqə üçün iş bilər 229 00:16:41,530 --> 00:16:45,250 və hər şey mükəmməl 100% iş əldə narahat yoxdur. 230 00:16:45,250 --> 00:16:51,410 Sadece bunu etməlidir necə yarısı pseudocode yazmaq. 231 00:16:52,000 --> 00:16:53,630 Okay. 232 00:16:53,630 --> 00:16:56,350 Tamamilə hələ bu edilə ehtiyac yoxdur. 233 00:16:56,350 --> 00:17:02,380 Ancaq hər kəs, onlar indiyə qədər nə ilə rahat hiss etmir 234 00:17:02,380 --> 00:17:05,599 bir şey kimi biz birlikdə işləyə bilər? 235 00:17:05,599 --> 00:17:09,690 Hər kəs könüllü istəyir? Və ya təsadüfi aparacaqlar. 236 00:17:12,680 --> 00:17:18,599 Bu hüququ heç bir tədbir ancaq bir iş dövlət dəyişə bilərsiniz bir şey olmalıdır deyil. 237 00:17:18,599 --> 00:17:20,720 [Tələbə] Sure. Okay. >> 238 00:17:20,720 --> 00:17:27,220 Beləliklə, siz az Save icon tıklayarak təftiş saxlaya bilərsiniz. 239 00:17:27,220 --> 00:17:29,950 Siz sağ, Ramya mi? >> [Tələbə] Bəli. >> [Bowden] Okay. 240 00:17:29,950 --> 00:17:35,140 Belə ki, indi mən sizin təftiş bilərsiniz və hər kəs yenidən qoparmaq bilər. 241 00:17:35,140 --> 00:17:38,600 Burada biz - Okay. 242 00:17:38,600 --> 00:17:43,160 Belə Ramya mütləq etibarlı həll olan recursive həlli ilə getdi. 243 00:17:43,160 --> 00:17:44,970 Bu problem edə bilər iki yolu var. 244 00:17:44,970 --> 00:17:48,060 Siz ya iteratively və ya recursively bunu edə bilərsiniz. 245 00:17:48,060 --> 00:17:53,860 Siz recursively edilə bilər ki, qarşılaşma ən problemlər də iteratively edilə bilər. 246 00:17:53,860 --> 00:17:58,510 Belə ki, burada biz recursively bunu etdik. 247 00:17:58,510 --> 00:18:03,730 >> Kimsə bir funksiyası recursive etmək nə deməkdir müəyyən etmək istəyir? 248 00:18:07,210 --> 00:18:08,920 [Tələbə] bir funksiyası var zaman özü zəng 249 00:18:08,920 --> 00:18:13,470 doğru və düzgün yerinə gələnə qədər və sonra özü zəng. >> Bəli. 250 00:18:13,470 --> 00:18:17,680 A recursive funksiyası yalnız özü tutan bir funksiyası var. 251 00:18:17,680 --> 00:18:24,140 Rekursiv funksiyası olmalıdır ki, üç böyük şeylər var. 252 00:18:24,140 --> 00:18:27,310 Ilk aşkar, o, özü çağırır. 253 00:18:27,310 --> 00:18:29,650 İkinci baza haldır. 254 00:18:29,650 --> 00:18:33,390 Belə ki, bir nöqtədə funksiyası, özü zəng dayandırmaq lazımdır 255 00:18:33,390 --> 00:18:35,610 və ki, əsas işi budur. 256 00:18:35,610 --> 00:18:43,860 Belə ki, burada biz dayandırmaq lazım bilirik ki, biz axtarış imtina etməlidir 257 00:18:43,860 --> 00:18:48,150 Axırıncı bərabərdir zaman - və biz o deməkdir ki, nə artıq getmək lazımdır. 258 00:18:48,150 --> 00:18:52,130 Amma nəhayət, recursive funksiyaları üçün vacibdir ki, son şey: 259 00:18:52,130 --> 00:18:59,250 funksiyaları birtəhər əsasında halda yanaşmaq lazımdır. 260 00:18:59,250 --> 00:19:04,140 , Ikinci recursive zəng zaman həqiqətən bir şey yenilənməsi değilseniz kimi, 261 00:19:04,140 --> 00:19:07,880 siz sözün yalnız həmin dəlilləri ilə yenidən funksiyası zəng etdiyiniz 262 00:19:07,880 --> 00:19:10,130 və qlobal dəyişənlər, dəyişdirilə və ya bir şey var 263 00:19:10,130 --> 00:19:14,430 Əgər baza halda olmaq heç vaxt bu halda ki, pis edir. 264 00:19:14,430 --> 00:19:17,950 Bu sonsuz recursion və bir yığın daşqın olacaq. 265 00:19:17,950 --> 00:19:24,330 Lakin burada biz başlamaq + sonuna / 2 təzələyirik ildən yeniləmə baş verən bax 266 00:19:24,330 --> 00:19:28,180 biz burada start arqument təzələyirik, burada son arqument təzələyirik,. 267 00:19:28,180 --> 00:19:32,860 Belə ki, bütün recursive zənglər biz bir şey təzələyirik,. Okay. 268 00:19:32,860 --> 00:19:38,110 Əgər həll vasitəsilə bizə gəzmək istəyirsiniz? >> Sure. 269 00:19:38,110 --> 00:19:44,270 Mən hər dəfə mən bu funksiya zəng ki SearchHelp kullanıyorum 270 00:19:44,270 --> 00:19:47,910 Mən sıra arıyorum yerləşir başlanğıc və son var 271 00:19:47,910 --> 00:19:49,380 harada Mən array arıyorum. 272 00:19:49,380 --> 00:19:55,330 >> Bu bir başlanğıc edən orta element, + sonuna / 2 var deyərək yerdə hər addım da, 273 00:19:55,330 --> 00:19:58,850 ki, aradığınız nə bərabərdir? 274 00:19:58,850 --> 00:20:04,650 Ki, onda biz bunu gördük və mən recursion səviyyəsi qədər qəbul olur ki danışarlar. 275 00:20:04,650 --> 00:20:12,540 Ki, doğru deyil, onda biz, array ki, orta dəyəri çox böyük yoxlamaq 276 00:20:12,540 --> 00:20:19,320 halda biz start orta index gedərək serialın sol yarım oldu. 277 00:20:19,320 --> 00:20:22,710 Və başqa biz sonuna yarım edin. 278 00:20:22,710 --> 00:20:24,740 [Bowden] Okay. 279 00:20:24,740 --> 00:20:27,730 Bu yaxşı səslənir. 280 00:20:27,730 --> 00:20:36,640 OK, bir neçə şeyi ki, və əslində, bu, çox yüksək səviyyədə şey 281 00:20:36,640 --> 00:20:41,270 ki, bu kurs üçün bilmək lazımdır heç vaxt, lakin o, doğrudur. 282 00:20:41,270 --> 00:20:46,080 Rekursiv funksiyaları, siz həmişə bir pis məşğul olduğunu eşitmək 283 00:20:46,080 --> 00:20:51,160 siz recursively özünüzü çox dəfə zəng etsəniz, yığın daşqın almaq çünki 284 00:20:51,160 --> 00:20:54,990 Mən əvvəl qeyd etdiyim kimi bəri, hər funksiyası öz yığını çərçivəsində olur. 285 00:20:54,990 --> 00:20:59,500 Belə ki, recursive funksiyası hər zəng öz yığını çərçivəsində olur. 286 00:20:59,500 --> 00:21:04,140 Əgər 1000 recursive zəng etmək Beləliklə, əgər 1000 yığını çərçivəsində almaq 287 00:21:04,140 --> 00:21:08,390 və tez bir çox yığını çərçivəsində və hər şeyi yalnız qırmaq olan gətirib çıxaracaqdır. 288 00:21:08,390 --> 00:21:13,480 Recursive funksiyaları ümumiyyətlə pis nə ki, var. 289 00:21:13,480 --> 00:21:19,370 Amma recursive funksiyaları gözəl alt quyruq-recursive funksiyaları var adlanır 290 00:21:19,370 --> 00:21:26,120 və bu compiler bu bildirişlər əgər olduğu bir nümunə olur 291 00:21:26,120 --> 00:21:29,920 və lazımdır, mən hesab edirəm - cingilti siz bu-O2 bayrağı keçmək əgər 292 00:21:29,920 --> 00:21:33,250 sonra bu quyruq recursive olduğunu qeyd və hər şeyi yaxşı edəcək. 293 00:21:33,250 --> 00:21:40,050 >> Hər recursive zəng üçün daha çox və eyni yığını çərçivəsində təkrar edəcək. 294 00:21:40,050 --> 00:21:47,010 Eyni yığını çərçivəsində istifadə etdiyiniz ildən Beləliklə, siz narahat ehtiyac yoxdur 295 00:21:47,010 --> 00:21:51,690 əvvəl bildirib kimi heç coşğun yığın və eyni zamanda, 296 00:21:51,690 --> 00:21:56,380 Əgər doğru qayıtmaq yerləşir dəfə, sonra bu yığını çərçivəsində Bütün qayıtmaq var 297 00:21:56,380 --> 00:22:01,740 və SearchHelp 9 qayıtmaq üçün var 10 zəng, 8-ci qayıtmaq üçün var. 298 00:22:01,740 --> 00:22:05,360 Belə ki funksiyaları quyruq recursive zaman nə lazım deyil. 299 00:22:05,360 --> 00:22:13,740 Və nə bu funksiya quyruq recursive edir xəbərdarlıq edir ki, searchHelp üçün hər hansı bir zəng üçün 300 00:22:13,740 --> 00:22:18,470 edilməsi olan recursive zəng qaytarılması nə edir. 301 00:22:18,470 --> 00:22:25,290 Belə SearchHelp üçün ilk zəng, biz dərhal, yalan qayıtmaq 302 00:22:25,290 --> 00:22:29,590 dərhal doğru qayıtmaq, ya da SearchHelp üçün rekursiv zəng 303 00:22:29,590 --> 00:22:33,810 biz qaytarılması etdiyiniz zəng qaytarılması nə edir. 304 00:22:33,810 --> 00:22:51,560 Biz int x = SearchHelp, qayıdış x * 2 kimi bir şey idi, əgər biz bunu bilmədi 305 00:22:51,560 --> 00:22:55,440 yalnız bir təsadüfi dəyişiklik. 306 00:22:55,440 --> 00:23:01,470 >> Belə ki, indi bu recursive zəng, bu int x = SearchHelp recursive zəng, 307 00:23:01,470 --> 00:23:05,740 faktiki qayıtmaq yoxdur, çünki quyruq artıq recursive edir 308 00:23:05,740 --> 00:23:10,400 geri bir əvvəlki yığını çərçivə ki funksiyası əvvəlki zəng 309 00:23:10,400 --> 00:23:13,040 sonra qaytarılması dəyəri bir şey edə bilərsiniz. 310 00:23:13,040 --> 00:23:22,190 Beləliklə, bu quyruq recursive deyil, qəşəng quyruq recursive əvvəl biz nə. Bəli. 311 00:23:22,190 --> 00:23:27,000 [Tələbə] ikinci baza halda ilk yoxlanılır olmamalıdır 312 00:23:27,000 --> 00:23:30,640 Siz dəlil keçmək Ü bir vəziyyət ola bilər, çünki 313 00:23:30,640 --> 00:23:35,770 siz = sonunda başlamaq, lakin onlar iynə dəyər var. 314 00:23:35,770 --> 00:23:47,310 Sonunda iynə dəyər olduğu sual biz halda daxil edə bilməz edilib 315 00:23:47,310 --> 00:23:52,000 ya = sonunda başlamaq müvafiq = sonunda başlamaq 316 00:23:52,000 --> 00:23:59,480 və həqiqətən, hələ ki, xüsusi dəyər yoxlanılır deyil 317 00:23:59,480 --> 00:24:03,910 sonra + sonuna / 2 başlamaq yalnız eyni dəyər olacaq. 318 00:24:03,910 --> 00:24:07,890 Amma biz artıq saxta geri etdik və həqiqətən dəyəri kontrol, heç vaxt. 319 00:24:07,890 --> 00:24:14,240 Ölçüsü 0 əgər Belə ki, ən azı, ilk zəng, sonra saxta qayıtmaq istəyirəm. 320 00:24:14,240 --> 00:24:17,710 Ölçüsü 1 olsa, sonra başlanğıc, bərabər son niyyətində deyil 321 00:24:17,710 --> 00:24:19,820 və biz ən azı bir element yoxlamaq lazımdır. 322 00:24:19,820 --> 00:24:26,750 Amma siz + sonuna / 2 başlamaq biz bir halda başa bilər ki, doğru hesab 323 00:24:26,750 --> 00:24:31,190 start up start + sonuna / 2 eyni olan bitir 324 00:24:31,190 --> 00:24:35,350 lakin biz həqiqətən ki element yoxlanılır heç vaxt. 325 00:24:35,350 --> 00:24:44,740 >> Beləliklə, biz ilk yoxlamaq əgər orta element, biz aradığınız dəyəri 326 00:24:44,740 --> 00:24:47,110 sonra biz dərhal doğru ola bilər. 327 00:24:47,110 --> 00:24:50,740 Onlar bərabər etdiyiniz Else, onda davam heç bir məqam yoxdur 328 00:24:50,740 --> 00:24:58,440 biz yalnız biz bir-element array üzrə olduğu bir halda yeniləmə olacaq ildən. 329 00:24:58,440 --> 00:25:01,110 Ki, bir element biz aradığınız bir deyil 330 00:25:01,110 --> 00:25:03,530 sonra hər şey səhvdir. Bəli. 331 00:25:03,530 --> 00:25:08,900 [Tələbə] şey, ölçüsü ildən sıra elementlərin sayı əslində daha böyük olduğunu 332 00:25:08,900 --> 00:25:13,070 bir ofset artıq var - >> Beləliklə ölçüsü olacaq - 333 00:25:13,070 --> 00:25:19,380 [Tələbə] serialın ölçüsü 0 idi De sonra SearchHelp həqiqətən 0 ot tayası kontrol 334 00:25:19,380 --> 00:25:21,490 ilk zəng. 335 00:25:21,490 --> 00:25:25,300 >> Bəli - The array ölçüsü 0 var, 0 belə. 336 00:25:25,300 --> 00:25:30,750 Başqa bir şey var - bu yaxşı ola bilər. Nin hesab edək. 337 00:25:30,750 --> 00:25:40,120 Serialın 10 elementlər var idi və biz yoxlamaq olacaq orta göstərici 5, belə əgər 338 00:25:40,120 --> 00:25:45,700 biz 5 kontrol edirik və dəyəri az olduğunu demək edək. 339 00:25:45,700 --> 00:25:50,720 Belə ki, 5 irəli uzaq hər şeyi ataraq edirik. 340 00:25:50,720 --> 00:25:54,030 Belə ki, son / 2 yeni son olacaq + başlamaq, 341 00:25:54,030 --> 00:25:57,450 Bəli, belə ki, həmişə serialın sonuna kənarda qalmaq olacaq. 342 00:25:57,450 --> 00:26:03,570 Hətta və ya tək idi, bir halda ki, onda biz, demək, 4 yoxlamaq olardı 343 00:26:03,570 --> 00:26:05,770 lakin biz hələ atmaq edirik - 344 00:26:05,770 --> 00:26:13,500 Bəli, belə ki, son zaman array faktiki son kənarda olacaq. 345 00:26:13,500 --> 00:26:18,350 Biz əsas diqqəti elementləri Belə ki, son həmişə sonra bir olacaq. 346 00:26:18,350 --> 00:26:24,270 Start heç bərabər sonunda əgər Beləliklə, biz size 0 bir sıra var. 347 00:26:24,270 --> 00:26:35,600 >> Mən düşünürdüm başqa şey biz başlamaq üçün start təzələyirik + sonuna / 2, edir 348 00:26:35,600 --> 00:26:44,020 Bu + sonuna / 2 başlamaq harada ilə sorun yaşıyorum iddia edir 349 00:26:44,020 --> 00:26:46,820 biz yoxlanılması olduğunuz elementidir. 350 00:26:46,820 --> 00:26:58,150 Gəlin biz bu 10 element array idi deyirlər. Neyse. 351 00:26:58,150 --> 00:27:03,250 Belə ki, son / 2 Bu kimi bir şey olacaq + başlamaq, 352 00:27:03,250 --> 00:27:07,060 və dəyəri deyil, biz yeniləmək istəyirlər. 353 00:27:07,060 --> 00:27:10,060 Dəyəri böyükdür, belə ki, biz serialın bu yarım baxmaq istəyirəm. 354 00:27:10,060 --> 00:27:15,910 Beləliklə, biz start təzələyirik, necə, indi bu element ola start təzələyirik,. 355 00:27:15,910 --> 00:27:23,790 Amma bu hələ iş bilər, və ya ən azı, siz start edə + sonuna / 2 + 1. 356 00:27:23,790 --> 00:27:27,850 [Tələbə] Sən + sonunda başlamaq üçün ehtiyac yoxdur [işitilemez] >> Bəli. 357 00:27:27,850 --> 00:27:33,240 Biz artıq bu element yoxlanılır və biz aradığınız bir deyil bilirik var. 358 00:27:33,240 --> 00:27:36,800 Beləliklə, biz bu element ola start yeniləmə ehtiyac yoxdur. 359 00:27:36,800 --> 00:27:39,560 Biz yalnız skip və bu element olmaq başlamaq təkmilləşdirə bilər. 360 00:27:39,560 --> 00:27:46,060 Və bir halda heç yoxdur, bu son idi ki, deyək, 361 00:27:46,060 --> 00:27:53,140 bu olardı belə sonra başlamaq, + Axırıncı / 2 bu olardı, 362 00:27:53,140 --> 00:28:00,580 + sonunda başlamaq - Bəli, mən bu sonsuz recursion ildə başa bilər. 363 00:28:00,580 --> 00:28:12,690 Yalnız ölçüsü 2 və ya ölçüsü 1 bir sıra bir sıra var edək deyirlər. Mən bu iş olacaq. 364 00:28:12,690 --> 00:28:19,490 Belə ki, hal-hazırda başlanğıc element və sonunda o kənarda 1 olmasıdır. 365 00:28:19,490 --> 00:28:24,110 Beləliklə, biz yoxlamaq olacaq ki, element, bu biri 366 00:28:24,110 --> 00:28:29,400 və sonra start yeniləmə zaman, biz 0 + 1/2 olmaq start təzələyirik 367 00:28:29,400 --> 00:28:33,160 olan başlanğıc bu element olan bizə geri bitirmək üzrədir. 368 00:28:33,160 --> 00:28:36,210 >> Yəni biz yenidən üzərində eyni element kontrol edirik. 369 00:28:36,210 --> 00:28:43,310 Beləliklə, bu, hər recursive zəng həqiqətən bir şey yeniləmək lazımdır belədir. 370 00:28:43,310 --> 00:28:48,370 Beləliklə, biz bir halda var start + sonuna / + 1, 2 və ya başqa nə etmək lazımdır 371 00:28:48,370 --> 00:28:50,710 biz həqiqətən start yenilənməsi deyilik. 372 00:28:50,710 --> 00:28:53,820 Hər kəs ki? 373 00:28:53,820 --> 00:28:56,310 Okay. 374 00:28:56,310 --> 00:29:03,860 Hər kəs bu həll və ya daha çox şərh sualınız varmı? 375 00:29:05,220 --> 00:29:10,280 Okay. Hər kəs bir biz bütün baxmaq olar ki, həll iterativ varmı? 376 00:29:17,400 --> 00:29:20,940 Biz bütün recursively bunu mi? 377 00:29:20,940 --> 00:29:25,950 Ya da mən sizə onunku açıldı, onda sizin əvvəlki overridden ola bilər danışarlar. 378 00:29:25,950 --> 00:29:28,810 Avtomatik qənaət mu? Mən müsbət deyiləm. 379 00:29:35,090 --> 00:29:39,130 Hər kəs iterativ varmı? 380 00:29:39,130 --> 00:29:42,430 Biz onun vasitəsilə gəzmək əgər bilməz. 381 00:29:46,080 --> 00:29:48,100 Ideyası, eyni olacaq. 382 00:30:00,260 --> 00:30:02,830 Həll iterativ. 383 00:30:02,830 --> 00:30:07,140 Biz əsasən eyni fikri etmək istəyirəm olacaq 384 00:30:07,140 --> 00:30:16,530 biz serialın yeni sonuna track və serialın yeni başlanğıc saxlamaq istədiyiniz 385 00:30:16,530 --> 00:30:18,510 və üzərində edin. 386 00:30:18,510 --> 00:30:22,430 Biz başlanğıc və sonunda heç kəsişmək kimi track saxlanılması ne varsa, 387 00:30:22,430 --> 00:30:29,020 sonra biz bunu tapa bilmədi və biz yalan ola bilər. 388 00:30:29,020 --> 00:30:37,540 Belə ki, necə ki etməliyəm? Hər kəs qoparmaq mənim üçün təklif və ya kodu var? 389 00:30:42,190 --> 00:30:47,450 [Tələbə] bir müddət loop edin. >> Bəli. 390 00:30:47,450 --> 00:30:49,450 Siz loop etmək istəyirəm edir. 391 00:30:49,450 --> 00:30:51,830 >> Mən qoparmaq bilər kodu var idimi, ya nə təklif gedirdi? 392 00:30:51,830 --> 00:30:56,340 [Tələbə] Mən belə düşünürəm. >> Bütün hüququ. Bu şeyi daha asan edir. Adı nə idi? 393 00:30:56,340 --> 00:30:57,890 [Tələbə] Lucas. 394 00:31:00,140 --> 00:31:04,190 Revision 1. Okay. 395 00:31:04,190 --> 00:31:13,200 Aşağı biz əvvəl başlamaq deyilən budur. 396 00:31:13,200 --> 00:31:17,080 Up biz əvvəl son deyilən olduqca nə deyil. 397 00:31:17,080 --> 00:31:22,750 Əslində, son array ərzində indi. Biz hesab etməlidir bir element var. 398 00:31:22,750 --> 00:31:26,890 Belə ki, aşağı 0 deyil, qədər serialın ölçüsü - 1, 399 00:31:26,890 --> 00:31:34,780 və indi biz loop və biz yoxlanılması olunur - 400 00:31:34,780 --> 00:31:37,340 Mən sizə onun vasitəsilə gəzmək bilər danışarlar. 401 00:31:37,340 --> 00:31:41,420 Bu vasitəsilə düşüncə nə idi? Kodunuzu vasitəsilə bizə tamamlayın. 402 00:31:41,420 --> 00:31:49,940 [Tələbə] Sure. Ortasında ot tayası dəyəri baxın və iynə müqayisə. 403 00:31:49,940 --> 00:31:58,520 Oh, həqiqətən ki, geri olmalıdır - sizin iynə daha əgər Beləliklə, sonra istəyirəm. 404 00:31:58,520 --> 00:32:05,180 Siz sağ yarım tullamaq istəyirəm olacaq, və yeah ki, yol olmalıdır. 405 00:32:05,180 --> 00:32:08,830 [Bowden] Beləliklə, bu daha az olmalıdır? Siz dedi ki, nə? >> [Tələbə] Bəli. 406 00:32:08,830 --> 00:32:10,390 [Bowden] Okay. Az. 407 00:32:10,390 --> 00:32:15,700 Nə biz aradığınız biz istədiyiniz nə daha kiçik Beləliklə, əgər, 408 00:32:15,700 --> 00:32:19,410 sonra Bəli, biz, sol yarım tullamaq istəyirəm 409 00:32:19,410 --> 00:32:22,210 olan biz nəzərə etdiyiniz hər şey təzələyirik deməkdir 410 00:32:22,210 --> 00:32:26,610 serialın sağ aşağı hərəkət. 411 00:32:26,610 --> 00:32:30,130 Bu yaxşı görünür. 412 00:32:30,130 --> 00:32:34,550 Hesab edirəm ki, biz əvvəlki bildirib ki, eyni məsələ var 413 00:32:34,550 --> 00:32:49,760 Ü aşağı 0 və 1 ilə qədər aşağı, sonra edir + up / 2 yenə eyni şey olacaq qurmaq gedir. 414 00:32:49,760 --> 00:32:53,860 >> Və bu halda belə, bu, ən azı daha səmərəli 415 00:32:53,860 --> 00:32:57,630 yalnız element tullamaq biz yalnız biz yanlış olduğunu hansı baxdı. 416 00:32:57,630 --> 00:33:03,240 Belə ki, aşağı + up / 2 + 1 - >> [tələbə] Bu başqa cür olmalıdır. 417 00:33:03,240 --> 00:33:05,900 [Bowden] Yaxud bu olmalıdır - 1 və digər bir + 1 olmalıdır. 418 00:33:05,900 --> 00:33:09,580 [Tələbə] Və ikiqat olmalıdır giriş bərabərdir. >> [Bowden] Bəli. 419 00:33:09,580 --> 00:33:11,340 [Tələbə] Bəli. 420 00:33:14,540 --> 00:33:15,910 Okay. 421 00:33:15,910 --> 00:33:21,280 Və nəhayət, indi biz bu + 1 var - 1 şey, 422 00:33:21,280 --> 00:33:31,520 o - bu ola bilər - bu, aşağı üçün daha çox dəyəri ilə başa heç mümkündürmü? 423 00:33:35,710 --> 00:33:40,320 Mümkün mü - Mən ola bilər ki, yalnız yol mi? >> [Tələbə] Mən bilmirəm. 424 00:33:40,320 --> 00:33:45,220 Amma qaralar olur və sonra mənfi olur ki, əgər sonra 1 və - >> Bəli. 425 00:33:45,220 --> 00:33:47,480 [Tələbə] Bu bəlkə qədər messed almaq olardı. 426 00:33:49,700 --> 00:33:53,940 Mən bunu yalnız yaxşı olmalıdır 427 00:33:53,940 --> 00:33:58,800 o aşağı sonuna qədər onlar bərabər olmalıdır deyə düşünürəm. 428 00:33:58,800 --> 00:34:03,070 Onlar bərabər, əgər Ancaq sonra biz başlamaq üçün isə loop etməzdilər 429 00:34:03,070 --> 00:34:06,670 və biz yalnız dəyəri geri olardı. Mən indi yaxşı olduğunuzu düşünürəm. 430 00:34:06,670 --> 00:34:11,530 Qeyd edək ki, bu problem artıq recursive deyil, baxmayaraq 431 00:34:11,530 --> 00:34:17,400 biz bu asanlıqla özü verir necə görə bilərsiniz ideyaların eyni cür tətbiq 432 00:34:17,400 --> 00:34:23,659 biz yalnız yenidən üzərində göstəriciləri təzələyirik ki, bir recursive həll etmək, 433 00:34:23,659 --> 00:34:29,960 biz problem kiçik və kiçik edirik, biz serialın alt diqqət edirik. 434 00:34:29,960 --> 00:34:40,860 [Tələbə] aşağı 0 və 1 ilə qədər deyil, onlar həm 0 + 1/2, 0 getmək olardı olardı 435 00:34:40,860 --> 00:34:44,429 və sonra bir + 1 olardı olardı - 1. 436 00:34:47,000 --> 00:34:50,870 [Tələbə] Harada biz bərabərlik yoxlanılması olunur? 437 00:34:50,870 --> 00:34:55,100 Orta əslində iynə əgər istəyirsiniz? 438 00:34:55,100 --> 00:34:58,590 Hal-hazırda bunu deyilik? Oh! 439 00:35:00,610 --> 00:35:02,460 It's varsa - 440 00:35:05,340 --> 00:35:13,740 Bəli. Gəlin ilk orta demək çünki aşağı burada test yalnız bilməz - 441 00:35:13,740 --> 00:35:16,430 [Tələbə] Bu əslində bound tullamaq deyil kimi. 442 00:35:16,430 --> 00:35:20,220 Siz bound tullamaq Belə ki, siz ilk və ya hər hansı bunu yoxlamaq lazımdır. 443 00:35:20,220 --> 00:35:23,350 Ah. Bəli. >> [Tələbə] Bəli. 444 00:35:23,350 --> 00:35:29,650 İndi biz hazırda baxdı bir atılmalıdır ki, 445 00:35:29,650 --> 00:35:33,260 olan biz indi də lazımdır deməkdir 446 00:35:33,260 --> 00:35:44,810 (ot tayası [(aşağı + up) / 2] == iynə), sonra biz doğru qayıtmaq bilər. 447 00:35:44,810 --> 00:35:52,070 Mən başqa və ya əgər qoymaq olub, bu sözün eyni şey deməkdir 448 00:35:52,070 --> 00:35:57,110 bu doğru geri olardı, çünki. 449 00:35:57,110 --> 00:36:01,450 Mən başqa varsa qoymaq lazımdır, lakin bu məsələ deyil. 450 00:36:01,450 --> 00:36:10,440 >> Belə ki, daha bu, başqa bu və bu mən ortaq bir şey varsa, 451 00:36:10,440 --> 00:36:14,340 harada hər şey burada yaxşı olduğu halda belə, 452 00:36:14,340 --> 00:36:22,780 aşağı yuxarı daha çox ola bilməz kimi, bu doğru olub dəyər mühakimə deyil. 453 00:36:22,780 --> 00:36:28,010 Aşağı-dən az və ya bərabər olduğu halda, Beləliklə, siz həmçinin demək olar 454 00:36:28,010 --> 00:36:30,720 və ya aşağı-dən az olduğu halda 455 00:36:30,720 --> 00:36:35,300 onlar bərabər və ya aşağı olduqda belə, yuxarı keçmək olur 456 00:36:35,300 --> 00:36:40,130 sonra biz bu loop həyata qıra bilər. 457 00:36:41,410 --> 00:36:44,630 Suallar, narahatlıqlar, şərh? 458 00:36:47,080 --> 00:36:49,270 Okay. Bu yaxşı görünür. 459 00:36:49,270 --> 00:36:52,230 İndi sırala etmək istəyirəm. 460 00:36:52,230 --> 00:37:04,030 Biz mənim ikinci versiya getmək varsa, bu eyni nömrələr bax 461 00:37:04,030 --> 00:37:07,550 lakin indi onlar sıralanır üçün artıq var. 462 00:37:07,550 --> 00:37:12,840 Və biz n log n O, hər hansı bir alqoritmi istifadə sort həyata istəyirəm. 463 00:37:12,840 --> 00:37:17,240 Biz burada həyata olan alqoritm Belə düşünürsünüz? >> [Tələbə] Merge sort. 464 00:37:17,240 --> 00:37:23,810 [Bowden] Bəli. Birleştirme cür ki, biz nə olacaq nə, O (n log n) edir. 465 00:37:23,810 --> 00:37:26,680 Və problem, olduqca oxşar olacaq 466 00:37:26,680 --> 00:37:31,920 harada asanlıqla recursive həllinə özü verir. 467 00:37:31,920 --> 00:37:35,580 Biz istəyirsinizsə Biz də bir iterativ həll ilə gəlmək olar 468 00:37:35,580 --> 00:37:42,540 lakin recursion burada daha asan olacaq və biz recursion etməlidir. 469 00:37:45,120 --> 00:37:49,530 Ki, biz ilk birləşmə sort vasitəsilə gəzmək olacaq tahmin 470 00:37:49,530 --> 00:37:54,280 birləşmə sort bir sevimli video artıq olsa. [Gülüş] 471 00:37:54,280 --> 00:37:59,780 Belə ki, var sort daxil - Mən bu kağız qədər israf edirəm. 472 00:37:59,780 --> 00:38:02,080 Oh, yalnız bir sol yoxdur. 473 00:38:02,080 --> 00:38:03,630 Belə ki, daxil. 474 00:38:08,190 --> 00:38:12,470 Oh, 1, 3, 5. 475 00:38:26,090 --> 00:38:27,440 Okay. 476 00:38:29,910 --> 00:38:33,460 Merge iki ayrı serialların edir. 477 00:38:33,460 --> 00:38:36,780 Fərdi bu iki serialların sıralanır də. 478 00:38:36,780 --> 00:38:40,970 Beləliklə, bu sıra, 1, 3, 5, sıralanır. Bu array, 0, 2, 4, sıralanır. 479 00:38:40,970 --> 00:38:46,710 İndi nə birləşmə etməlidir özü sıralanır ki, bir sıra onları birləşdirmək edir. 480 00:38:46,710 --> 00:38:57,130 Beləliklə, biz bu daxilində bu elementlər üçün gedir ki, ölçüsü 6 bir sıra istəyirəm 481 00:38:57,130 --> 00:38:59,390 sıralanır üçün. 482 00:38:59,390 --> 00:39:03,390 >> Və biz bu iki serialların ayrılır ki, istifadə edə bilər 483 00:39:03,390 --> 00:39:06,800 xətti vaxt bunu, 484 00:39:06,800 --> 00:39:13,510 xətti zaman məna bu array x və bu ölçüsü y olduqda, 485 00:39:13,510 --> 00:39:20,970 sonra ümumi alqoritm O (x + y) olmalıdır. Okay. 486 00:39:20,970 --> 00:39:23,150 Təklif edir. 487 00:39:23,150 --> 00:39:26,030 [Tələbə] biz sol başlamaq bilərmi? 488 00:39:26,030 --> 00:39:30,150 Belə ki, aşağı ilk və sonra 1 0 qoymaq lazımdır və sonra burada 2 istəyirik. 489 00:39:30,150 --> 00:39:33,320 Belə ki, doğru hərəkət ki, nişanı var kimi növü var. >> [Bowden] Bəli. 490 00:39:33,320 --> 00:39:41,070 Biz yalnız leftmost element diqqət bu serialların hər üçün. 491 00:39:41,070 --> 00:39:43,530 Həm serialların sıralanır Çünki biz bilirik ki, bu 2 elementləri 492 00:39:43,530 --> 00:39:46,920 ya sıra kiçik elementləridir. 493 00:39:46,920 --> 00:39:53,500 Belə ki, o 2 elementləri 1 bizim birləşmiş array ən kiçik element olmalıdır deməkdir. 494 00:39:53,500 --> 00:39:58,190 Bu, sadəcə belə kiçik hüququ bu dəfə bir ki, baş verir. 495 00:39:58,190 --> 00:40:02,580 0 az 1 çünki Belə ki, biz, 0 almaq sol onu daxil 496 00:40:02,580 --> 00:40:08,210 belə, 0 almaq bizim ilk mövqe onu daxil, sonra biz bu yeniləmə 497 00:40:08,210 --> 00:40:12,070 İndi ilk element diqqət. 498 00:40:12,070 --> 00:40:14,570 İndi biz deyirəm. 499 00:40:14,570 --> 00:40:20,670 Belə ki, indi biz 2 müqayisə və 1. 1 kiçik, belə ki, biz 1 daxil olacaq. 500 00:40:20,670 --> 00:40:25,300 Biz bu oğlan işaret üçün bu göstərici yeniləmə. 501 00:40:25,300 --> 00:40:33,160 İndi yenə bunu, 2 belə. Bu, yeniləmə, bu 2, 3 müqayisə edəcək. 502 00:40:33,160 --> 00:40:37,770 Bu yenilikləri, 4 və 5. 503 00:40:37,770 --> 00:40:42,110 Belə ki, birləşmə deyil. 504 00:40:42,110 --> 00:40:49,010 >> Bu yalnız bir dəfə hər bir element üzrə getmək ildən xətti vaxt ki, olduqca aydın olmalıdır. 505 00:40:49,010 --> 00:40:55,980 Və bu birləşmə sort bu edir həyata ən böyük addımdır. 506 00:40:55,980 --> 00:40:59,330 Və bu çətin deyil. 507 00:40:59,330 --> 00:41:15,020 Narahat bir neçə şeyi edək biz 1, 2, 3, 4, 5, 6 birləşməsi idi demək deyil. 508 00:41:15,020 --> 00:41:30,930 Bu halda biz, bu kiçik olacaq yerləşir ssenari ildə başa 509 00:41:30,930 --> 00:41:36,160 sonra biz bu göstərici yeniləmə, bu kiçik olacaq, bu yeniləmə, 510 00:41:36,160 --> 00:41:41,280 bu bir kiçik, və indi tanımaq üçün 511 00:41:41,280 --> 00:41:44,220 həqiqətən ilə müqayisə elementləri tökülmək etdik zaman. 512 00:41:44,220 --> 00:41:49,400 Biz bütün bu array istifadə ildən, 513 00:41:49,400 --> 00:41:55,190 Bu array hər şey indi yalnız burada daxil. 514 00:41:55,190 --> 00:42:02,040 Biz daim Diziler biri tamamilə artıq birləşmə nöqtəyə, daxil əgər 515 00:42:02,040 --> 00:42:06,510 sonra biz yalnız başqa array bütün elementləri almaq və serialın sonunda onları yerləşdirin. 516 00:42:06,510 --> 00:42:13,630 Beləliklə, biz yalnız, 5, 6 4 əlavə edə bilərsiniz. Okay. 517 00:42:13,630 --> 00:42:18,070 Yəni üçün baxın bir şeydir. 518 00:42:22,080 --> 00:42:26,120 O 1 addımı olmalıdır həyata keçirilməsi. 519 00:42:26,120 --> 00:42:32,600 Birleştirme ki əsaslanır sonra sort, o, 2 pillə, 2 səfeh addımlar var. 520 00:42:38,800 --> 00:42:42,090 Gəlin bu array verir. 521 00:42:57,920 --> 00:43:05,680 Belə ki, sort daxil addım 1 recursively yarıya indirir daxil array qırmaq edir. 522 00:43:05,680 --> 00:43:09,350 Belə ki, yarıya indirir bu array parçalanması. 523 00:43:09,350 --> 00:43:22,920 Biz indi 4, 15, 16, 50 və 8, 23, 42, 108 var. 524 00:43:22,920 --> 00:43:25,800 İndi yenə bunu və biz yarıya indirir bu split. 525 00:43:25,800 --> 00:43:27,530 Mən bu tərəfində bunu yalnız lazımdır. 526 00:43:27,530 --> 00:43:34,790 50, 4, 15 və 16 belə. 527 00:43:34,790 --> 00:43:37,440 Biz burada eyni şey olardı. 528 00:43:37,440 --> 00:43:40,340 İndi biz yenə yarıya indirir daxil parçalanması. 529 00:43:40,340 --> 00:43:51,080 Və biz 4, 15, 16, 50 var. 530 00:43:51,080 --> 00:43:53,170 Belə ki, bizim əsas haldır. 531 00:43:53,170 --> 00:44:00,540 Bu serialların ölçüsü 1 olduğunda, biz yarıya indirir daxil parçalanması ilə dayandırmaq. 532 00:44:00,540 --> 00:44:03,190 >> İndi bu nə etməliyəm? 533 00:44:03,190 --> 00:44:15,730 Biz bu da 8, 23, 42, və 108 daxil qırmaq olacaq son. 534 00:44:15,730 --> 00:44:24,000 Belə ki, indi biz bu nöqtədə olduğunu, indi birləşmə növ iki yalnız siyahıları cüt birləşməsi olunur addım. 535 00:44:24,000 --> 00:44:27,610 Beləliklə, biz bu daxil etmək istəyirik. Biz yalnız daxil çağırırıq. 536 00:44:27,610 --> 00:44:31,410 Biz birləşməsi sıralaması üçün bu qayıdacaq bilirəm. 537 00:44:31,410 --> 00:44:33,920 4, 15. 538 00:44:33,920 --> 00:44:41,440 İndi biz bu daxil etmək istəyirəm ki, bu, sorted üçün həmin siyahısı qayıdacaq 539 00:44:41,440 --> 00:44:44,160 16, 50. 540 00:44:44,160 --> 00:44:57,380 Biz o daxil - Mən yaza bilməz - 8, 23 və 42, 108. 541 00:44:57,380 --> 00:45:02,890 Beləliklə, biz bir birləşmiş cüt var. 542 00:45:02,890 --> 00:45:05,140 İndi biz yalnız yenidən daxil. 543 00:45:05,140 --> 00:45:10,130 Özlüyündə bu siyahıları hər çeşidlənir edək ki, 544 00:45:10,130 --> 00:45:15,220 və sonra yalnız sıralanır olan ölçüsü 4 bir siyahısını almaq üçün bu siyahıları daxil edə bilərsiniz 545 00:45:15,220 --> 00:45:19,990 və sorted ki ölçüsü 4 bir siyahısını almaq üçün bu iki siyahıları daxil. 546 00:45:19,990 --> 00:45:25,710 Və, nəhayət, biz sıralanır ki, ölçüsü 8 bir siyahısını almaq üçün ölçüsü 4 bu iki siyahıları daxil edə bilərsiniz. 547 00:45:25,710 --> 00:45:34,030 Belə ki, bu ümumi n log n ki, biz artıq birləşmə xətti olduğunu gördüm, 548 00:45:34,030 --> 00:45:40,390 belə zaman belə birləşmə ümumi dəyəri kimi, bu birləşmə ilə məşğul olduğunuz 549 00:45:40,390 --> 00:45:43,410 Bu iki siyahıları üçün yalnız 2 çünki - 550 00:45:43,410 --> 00:45:49,610 Və ya yaxşı, bu n O, ancaq burada n yalnız bu 2 elementlər, belə ki, o, 2 deyil. 551 00:45:49,610 --> 00:45:52,850 Və bu 2 2 olacaq və bu 2 2 olacaq və bu 2 2 olacaq 552 00:45:52,850 --> 00:45:58,820 biz nə etmək lazımdır ki, əlaqələnir bütün arasında, biz n bunu son. 553 00:45:58,820 --> 00:46:03,210 Bəyəndim 2 + 2 + 2 + 2 n olan 8, edir 554 00:46:03,210 --> 00:46:08,060 bu dəsti birləşməsi dəyəri n. 555 00:46:08,060 --> 00:46:10,810 Və sonra burada eyni şey. 556 00:46:10,810 --> 00:46:16,980 Biz sonra bu 2, bu 2 daxil olacaq, və fərdi birləşmə, dörd əməliyyatları keçiriləcək 557 00:46:16,980 --> 00:46:23,610 Bu birləşmə, bütün bunlar arasında, bir daha dörd əməliyyatları aparmaq, ancaq 558 00:46:23,610 --> 00:46:29,030 biz birləşmə n ümumi şeyi başa, və bu addım n edir. 559 00:46:29,030 --> 00:46:33,670 Və hər səviyyədə birləşdi olan n elementləri edir. 560 00:46:33,670 --> 00:46:36,110 >> Və necə bir çox səviyyədə var? 561 00:46:36,110 --> 00:46:40,160 Hər səviyyədə, bizim array ölçüsü 2 artır. 562 00:46:40,160 --> 00:46:44,590 Burada bizim seriallarda ölçüsü 1, burada onlar ölçüsü 2 istəyirik, burada onlar, ölçüsü 4 istəyirik 563 00:46:44,590 --> 00:46:46,470 və nəhayət, onlar ölçüsü 8 istəyirik. 564 00:46:46,470 --> 00:46:56,450 Bu misli belə bəri, Giriş n bu səviyyədə ümumi olmalıdır edir. 565 00:46:56,450 --> 00:47:02,090 Belə ki, log n səviyyəsi, hər fərdi səviyyədə qəbul n ümumi əməliyyatları ilə, 566 00:47:02,090 --> 00:47:05,720 biz n log n alqoritm almaq. 567 00:47:05,720 --> 00:47:07,790 Suallar? 568 00:47:08,940 --> 00:47:13,320 Insanlar artıq bu həyata dair irəliləyiş varmı? 569 00:47:13,320 --> 00:47:18,260 Mən yalnız onların kodu qoparmaq bilər artıq bir dövlət hər kəs varmı? 570 00:47:20,320 --> 00:47:22,260 Mən bir dəqiqə verə bilər. 571 00:47:24,770 --> 00:47:27,470 Bu, bir daha olacaq. 572 00:47:27,470 --> 00:47:28,730 Mən qayıtmaq gəlir - 573 00:47:28,730 --> 00:47:30,510 Siz birləşməsi üçün recursion nə yoxdur 574 00:47:30,510 --> 00:47:33,750 birləşməsi üçün recursion etmək üçün, müxtəlif ölçülü bir dəstə keçməli olacaq. 575 00:47:33,750 --> 00:47:37,150 Siz, lakin bu annoying var. 576 00:47:37,150 --> 00:47:43,720 Amma sort özü üçün recursion olduqca asandır. 577 00:47:43,720 --> 00:47:49,190 Siz yalnız sözün doğru yarısında sort, sol yarısında cür adlandırırlar. Okay. 578 00:47:51,770 --> 00:47:54,860 Hər kəs hələ qoparmaq bilər bir şey var? 579 00:47:54,860 --> 00:47:57,540 Və ya başqa bir dəqiqə verəcəyik. 580 00:47:58,210 --> 00:47:59,900 Okay. 581 00:47:59,900 --> 00:48:02,970 Hər kəs biz ilə işləyə bilər bir şey var? 582 00:48:05,450 --> 00:48:09,680 Və ya başqa biz yalnız bu iş və oradan da genişləndirmək lazımdır. 583 00:48:09,680 --> 00:48:14,050 >> Hər kəs mən qoparmaq bilər ki, bu daha çox var? 584 00:48:14,050 --> 00:48:17,770 [Tələbə] Bəli. Siz mina qoparmaq bilər. >> Bütün hüququ. 585 00:48:17,770 --> 00:48:19,730 Bəli! 586 00:48:22,170 --> 00:48:25,280 [Tələbə] şərtlər var idi. >> Oh, vur. Siz - 587 00:48:25,280 --> 00:48:28,110 [Tələbə] Mən saxlamaq lazımdır. >> Bəli. 588 00:48:32,420 --> 00:48:35,730 Belə ki, ayrı-ayrılıqda birləşmə etmək idi. 589 00:48:35,730 --> 00:48:38,570 Oh, lakin bu pis deyil. 590 00:48:39,790 --> 00:48:41,650 Okay. 591 00:48:41,650 --> 00:48:47,080 Belə ki, sort yalnız mergeSortHelp zəng özü edir. 592 00:48:47,080 --> 00:48:49,530 MergeSortHelp nə bizə izah edir. 593 00:48:49,530 --> 00:48:55,700 [Tələbə] MergeSortHelp olduqca çox iki əsas addımlar edir 594 00:48:55,700 --> 00:49:01,270 olan serialın hər yarım sort və sonra hər ikisi daxil edir. 595 00:49:04,960 --> 00:49:08,050 [Bowden] Okay, belə ki, mənə ikinci verir. 596 00:49:10,850 --> 00:49:13,210 Mən bu düşünün - >> [tələbə] Mən lazımdır - 597 00:49:17,100 --> 00:49:19,400 Bəli. Mən bir şey itkin alıram. 598 00:49:19,400 --> 00:49:23,100 Birləşmə, mən yeni bir sıra yaratmaq lazımdır ki, həyata 599 00:49:23,100 --> 00:49:26,530 I yer bunu bilməzdi. >> Bəli. Siz edə bilərsiniz. Düzeltin. 600 00:49:26,530 --> 00:49:28,170 [Tələbə] Mən yeni bir sıra yaratmaq. 601 00:49:28,170 --> 00:49:31,510 Mən yenidən dəyişmək üçün daxil sonunda unuttum. 602 00:49:31,510 --> 00:49:34,490 Okay. Biz yeni array lazımdır. 603 00:49:34,490 --> 00:49:41,000 Birləşmə sort, bu demək olar ki, həmişə doğrudur. 604 00:49:41,000 --> 00:49:44,340 Daha yaxşı bir alqoritm vaxt müdrik dəyəri Kateqoriya 605 00:49:44,340 --> 00:49:47,310 demək olar ki, həmişə bir az daha çox yaddaş istifadə ehtiyac olunur. 606 00:49:47,310 --> 00:49:51,570 Belə ki, burada, siz necə olursa sort daxil, 607 00:49:51,570 --> 00:49:54,780 siz qaçılmaz bəzi əlavə yaddaş istifadə etmək lazımdır. 608 00:49:54,780 --> 00:49:58,240 O, yeni bir sıra yaradıldı. 609 00:49:58,240 --> 00:50:03,400 Və sonra sonunda biz yalnız orijinal sıra yeni array surəti lazımdır deyirlər. 610 00:50:03,400 --> 00:50:04,830 [Tələbə] Mən Bəli, belə düşünürəm. 611 00:50:04,830 --> 00:50:08,210 Ki, arayış və ya hər hansı hesablama baxımından işləri Bilmirəm - 612 00:50:08,210 --> 00:50:11,650 Bəli, bu iş olacaq. >> [Tələbə] Okay. 613 00:50:20,620 --> 00:50:24,480 Bu çalışan cəhd mi? >> [Tələbə] Xeyr, yoxdur. Okay. >> 614 00:50:24,480 --> 00:50:28,880 Bu qaçış cəhd edin, və sonra ikinci bu barədə danışmaq lazımdır. 615 00:50:28,880 --> 00:50:35,200 [Tələbə] Mən doğru olsa da, bütün funksiya prototipləri və hər şey lazımdır? 616 00:50:37,640 --> 00:50:40,840 Funksiyası prototipləri. Bəli - Oh, siz kimi nəzərdə tuturam. 617 00:50:40,840 --> 00:50:43,040 Sort mergeSortHelp çağırır. 618 00:50:43,040 --> 00:50:47,390 >> Belə ki, sort mergeSortHelp zəng etmək üçün, mergeSortHelp ya müəyyən edilmiş olmalıdır 619 00:50:47,390 --> 00:50:56,370 sort əvvəl və ya biz prototip yalnız lazımdır. Sadəcə surəti və yapışdırıb. 620 00:50:56,370 --> 00:50:59,490 Və eyni, mergeSortHelp, daxil zəng 621 00:50:59,490 --> 00:51:03,830 lakin birləşmə hələ müəyyən olunmayıb, belə ki, biz yalnız mergeSortHelp bildirin bilər 622 00:51:03,830 --> 00:51:08,700 ki, daxil nə kimi baxmaq edir ki, ki, ki,. 623 00:51:09,950 --> 00:51:15,730 MergeSortHelp belə. 624 00:51:22,770 --> 00:51:32,660 Biz baza halda olduğu Biz burada bir məsələ var. 625 00:51:32,660 --> 00:51:38,110 MergeSortHelp recursive, belə ki, hər hansı bir recursive funksiyası 626 00:51:38,110 --> 00:51:42,610 recursively özü zəng dayandırmaq üçün zaman bilmək baza halda bir növ lazımdır gedir. 627 00:51:42,610 --> 00:51:45,590 Bizim baza halda burada nə olacaq? Bəli. 628 00:51:45,590 --> 00:51:49,110 [Tələbə] ölçüsü 1 varsa? >> [Bowden] Bəli. 629 00:51:49,110 --> 00:51:56,220 Biz orada gördüm Belə ki kimi, biz parçalanması serialların dayandırdı 630 00:51:56,220 --> 00:52:01,850 bir dəfə biz istər-istəməz özlərini sıralanır olan ölçüsü 1, diziler nəzərə almışdır. 631 00:52:01,850 --> 00:52:09,530 Ölçüsü 1 bərabərdir Belə ki, biz, array artıq çeşidlənir bilirik 632 00:52:09,530 --> 00:52:12,970 biz yalnız ola bilər. 633 00:52:12,970 --> 00:52:16,880 >> Boşluq var bildirək ki, biz xüsusi bir şey yoxdu, yalnız geri. 634 00:52:16,880 --> 00:52:19,580 Okay. Belə ki, bizim əsas işi var. 635 00:52:19,580 --> 00:52:27,440 Düşünürəm ki, biz, ölçüsü 0 bir sıra birləşdirilməsi üçün baş əgər baza halda da ola bilər tahmin 636 00:52:27,440 --> 00:52:30,030 biz yəqin ki, bir anda dayandırmaq istəyirəm 637 00:52:30,030 --> 00:52:33,610 biz yalnız az 2 və ya daha az və ya 1-bərabər ölçüsü demək olar 638 00:52:33,610 --> 00:52:37,150 bu artıq heç bir array üçün işləyəcək ki,. 639 00:52:37,150 --> 00:52:38,870 Okay. 640 00:52:38,870 --> 00:52:42,740 Belə ki, bizim əsas işi var. 641 00:52:42,740 --> 00:52:45,950 İndi birləşmə vasitəsilə bizə gəzmək istəyirsiniz? 642 00:52:45,950 --> 00:52:49,140 Bütün bu hallarda nə deməkdir? 643 00:52:49,140 --> 00:52:54,480 Burada, biz yalnız, eyni ideya edirik ki, - 644 00:52:56,970 --> 00:53:02,470 [Tələbə] Mən bütün mergeSortHelp zənglər ölçüsü keçən lazımdır. 645 00:53:02,470 --> 00:53:10,080 Mən əlavə əsas kimi ölçüsü əlavə və ölçüsü / 2 kimi yoxdur. 646 00:53:10,080 --> 00:53:16,210 [Bowden] Oh, ölçüsü / 2, ölçüsü / 2. >> [Tələbə] Bəli, və həmçinin yuxarıda funksiyası. 647 00:53:16,210 --> 00:53:21,320 [Bowden] Burada? >> [Tələbə] Just ölçüsü. >> [Bowden] Oh. Size, ölçüsü? >> [Tələbə] Bəli. 648 00:53:21,320 --> 00:53:23,010 [Bowden] Okay. 649 00:53:23,010 --> 00:53:26,580 Mənə bir ikinci hesab edək. 650 00:53:26,580 --> 00:53:28,780 Biz bir məsələ daxil edirsiniz? 651 00:53:28,780 --> 00:53:33,690 Biz həmişə 0 kimi sol müalicə edirik. >> [Tələbə] saylı 652 00:53:33,690 --> 00:53:36,340 Bu çox yanlış. Bağışlayın. Bu başlanğıc olmalıdır. Bəli. 653 00:53:36,340 --> 00:53:39,230 [Bowden] Okay. Mən daha yaxşı istəyirəm. 654 00:53:39,230 --> 00:53:43,880 Və sonu. Okay. 655 00:53:43,880 --> 00:53:47,200 Belə ki, indi birləşmə vasitəsilə bizə gəzmək istəyirsiniz? >> [Tələbə] Okay. 656 00:53:47,200 --> 00:53:52,150 Mən yalnız mən yaratdıq ki, bu yeni array vasitəsilə gəzinti edirəm. 657 00:53:52,150 --> 00:53:57,420 Onun ölçüsü biz sıralanır istədiyiniz serialın hissəsinin ölçüsü 658 00:53:57,420 --> 00:54:03,460 Mən yeni array addım qoymaq lazımdır ki element tapmaq üçün çalışırıq. 659 00:54:03,460 --> 00:54:10,140 Serialın sol yarısı daha çox elementləri üçün davam etsəniz bunu ilk mən yoxlanılması deyiləm, 660 00:54:10,140 --> 00:54:14,260 bu deyil, əgər, sonra yalnız deyir ki, başqa şəraiti, enmək 661 00:54:14,260 --> 00:54:20,180 tamam doğru array olmalıdır və biz newArray cari index ki qoymaq lazımdır. 662 00:54:20,180 --> 00:54:27,620 >> Serialın sağ da başa əgər, sonra başqa, mən, nəzarət edirəm 663 00:54:27,620 --> 00:54:30,630 Bu halda mən yalnız sol qoydu. 664 00:54:30,630 --> 00:54:34,180 Bu həqiqətən lazım ola bilər. Mən əmin deyiləm. 665 00:54:34,180 --> 00:54:40,970 Amma hər halda, iki olan digər iki çek sol və ya sağ kiçik. 666 00:54:40,970 --> 00:54:49,770 Həmçinin hər bir halda, mən arttırmayı hansı tutucu incrementing alıram. 667 00:54:49,770 --> 00:54:52,040 [Bowden] Okay. 668 00:54:52,040 --> 00:54:53,840 Bu yaxşı görünür. 669 00:54:53,840 --> 00:54:58,800 Hər kəs şərh və ya narahatlıqlar və ya sualınız varmı? 670 00:55:00,660 --> 00:55:07,720 Və ya beş kimi görünür - - biz yalnız meydana şey gətirmək üçün olan dörd hallarda Beləliklə 671 00:55:07,720 --> 00:55:13,100 lakin biz, sol sıra biz daxil etmək lazımdır şeyi tökülmək olub olmadığını hesab etmək 672 00:55:13,100 --> 00:55:16,390 hüququ sıra biz daxil etmək lazımdır şeyi tükendi olub - 673 00:55:16,390 --> 00:55:18,400 Mən heç işarə edirəm. 674 00:55:18,400 --> 00:55:21,730 Belə ki, sol array şeyi tökülmək və ya sağ array şeyi tükendi olub. 675 00:55:21,730 --> 00:55:24,320 Bu iki halda olur. 676 00:55:24,320 --> 00:55:30,920 Biz də sol şey düzgün az olub və mənasız işi lazımdır. 677 00:55:30,920 --> 00:55:33,910 Sonra sol şey seçmək istəyirik. 678 00:55:33,910 --> 00:55:37,630 Bu hallar var. 679 00:55:37,630 --> 00:55:40,990 Belə ki, bu idi hüququ var ki. 680 00:55:40,990 --> 00:55:46,760 Array ayrıldı. Bu 1, 2, 3 var. Okay. Belə ki, Bəli, o biz edə bilərsiniz dörd şey. 681 00:55:50,350 --> 00:55:54,510 Və biz bir həll iterativ artıq getmək deyil. 682 00:55:54,510 --> 00:55:55,980 Mən tövsiyə deyil - 683 00:55:55,980 --> 00:56:03,070 Birleştirme növ recursive həm quyruq deyil ki, funksiyası bir nümunəsidir 684 00:56:03,070 --> 00:56:07,040 , o, quyruq recursive etmək asan deyil 685 00:56:07,040 --> 00:56:13,450 həm də o iterativ etmək çox asan deyil. 686 00:56:13,450 --> 00:56:16,910 Bu çox asandır. 687 00:56:16,910 --> 00:56:19,170 Birləşmə növ bu həyata keçirilməsi, 688 00:56:19,170 --> 00:56:22,140 , nə olursa olsun daxil, siz birləşmə qurmaq olacaq. 689 00:56:22,140 --> 00:56:29,170 >> Belə birləşmə üst inşa sort recursively yalnız bu üç xətləri edir birleştirir. 690 00:56:29,170 --> 00:56:34,700 Iteratively, bu barədə düşünmək daha annoying və daha çətindir. 691 00:56:34,700 --> 00:56:41,860 Amma mergeSortHelp ildən recursive quyruq deyil ki, qeyd - bu özü çağırır zaman - 692 00:56:41,860 --> 00:56:46,590 hələ bu recursive zəng qaytarır sonra şeyə ehtiyacı var. 693 00:56:46,590 --> 00:56:50,830 Beləliklə, bu yığını çərçivəsində hətta bu zəng sonra mövcud davam etməlidir. 694 00:56:50,830 --> 00:56:54,170 Və sonra bu zəng zaman yığın çərçivəsində mövcud davam etməlidir 695 00:56:54,170 --> 00:56:57,780 hətta zəng sonra, biz hələ də daxil etmək lazımdır, çünki. 696 00:56:57,780 --> 00:57:01,920 Və bu quyruq recursive etmək nontrivial edir. 697 00:57:04,070 --> 00:57:06,270 Suallar? 698 00:57:08,300 --> 00:57:09,860 Bütün hüquqlar. 699 00:57:09,860 --> 00:57:13,400 Belə ki, sort geri gedir - oh, mən göstərmək istəyirəm iki şey var. Okay. 700 00:57:13,400 --> 00:57:17,840 Sort geri gedir, biz tez bu edəcəyik. 701 00:57:17,840 --> 00:57:21,030 Və ya axtarış. Sort? Sort. Bəli. 702 00:57:21,030 --> 00:57:22,730 Növ əvvəlinə geri gedir. 703 00:57:22,730 --> 00:57:29,870 Biz hər hansı bir alqoritm istifadə edən növləri sıra alqoritm yaratmaq istəyirəm 704 00:57:29,870 --> 00:57:33,660 n O. 705 00:57:33,660 --> 00:57:40,860 Belə ki, necə bu mümkündür? Hər kəs hər hansı varmı - 706 00:57:40,860 --> 00:57:44,300 Mən əvvəl hinted - 707 00:57:44,300 --> 00:57:48,300 Biz n log n n Ey təkmilləşdirilməsi haqqında danışırsınızsa, 708 00:57:48,300 --> 00:57:51,450 bizim alqoritm zaman-müdrik, yaxşılaşmışdır 709 00:57:51,450 --> 00:57:55,250 hansı ki üçün etmək üçün nə etmək lazımdır nə gedir? deməkdir 710 00:57:55,250 --> 00:57:59,520 [Tələbə] Space. >> Bəli. Biz daha çox yer istifadə olacaq. 711 00:57:59,520 --> 00:58:04,490 Və hətta daha çox yer, bu dözərək daha çox yer var. 712 00:58:04,490 --> 00:58:14,320 Mən alqoritm bu cür yalançı bir şey, yalançı polynom hesab - 713 00:58:14,320 --> 00:58:18,980 yalançı - Mən xatırlayıram bilməz. Pseudo bir şey. 714 00:58:18,980 --> 00:58:22,210 Biz çox yer istifadə etmək lazımdır, çünki bu 715 00:58:22,210 --> 00:58:28,610 bu mümkün deyil, real deyil. 716 00:58:28,610 --> 00:58:31,220 >> Və biz buna nail edirsiniz? 717 00:58:31,220 --> 00:58:36,810 Biz təmin əgər biz buna nail olar ki, array hər hansı xüsusi element 718 00:58:36,810 --> 00:58:39,600 aşağıda müəyyən bir ölçüsü. 719 00:58:42,070 --> 00:58:44,500 Belə ki, yalnız ölçüsü 200 olduğunu deyək 720 00:58:44,500 --> 00:58:48,130 bir sıra hər hansı bir element altında ölçüsü 200 manatdır. 721 00:58:48,130 --> 00:58:51,080 Bu, həqiqətən, çox realdır. 722 00:58:51,080 --> 00:58:58,660 Siz çox asanlıqla siz hər şeyi bilirsiniz ki, bir sıra ola bilər 723 00:58:58,660 --> 00:59:00,570 bir az olacaq. 724 00:59:00,570 --> 00:59:07,400 Bəzi tamamilə kütləvi vektor və ya bir şey varsa, kimi 725 00:59:07,400 --> 00:59:11,810 amma hər şeyi, 0 və 5 arasında olacaq bilirik 726 00:59:11,810 --> 00:59:14,790 sonra bunu əhəmiyyətli dərəcədə daha sürətli olacaq. 727 00:59:14,790 --> 00:59:17,930 Və elementlərin hər hansı bir bağlı, 5 728 00:59:17,930 --> 00:59:21,980 bu bound belə ki, istifadə etmək olacaq nə qədər yaddaş var. 729 00:59:21,980 --> 00:59:26,300 Belə ki, bound 200 manatdır. 730 00:59:26,300 --> 00:59:32,960 Bir tamsayı yalnız 4 milyard ola bilər-ci ildən nəzəriyyə bir bound, həmişə var 731 00:59:32,960 --> 00:59:40,600 lakin sonra biz kosmik istifadə istədiyiniz ildən real deyil 732 00:59:40,600 --> 00:59:44,400 4 milyard sifarişi. Belə ki, qeyri-real edir. 733 00:59:44,400 --> 00:59:47,060 Lakin burada biz bound demək lazımdır 200 manatdır. 734 00:59:47,060 --> 00:59:59,570 N O bunu üçün oyun biz ölçüsü sayar bağlı deyilən bir sıra olun. 735 00:59:59,570 --> 01:00:10,470 Yəni əslində, bu bir qısa yoldur - cingilti bu əgər mən həqiqətən bilmirəm. 736 01:00:11,150 --> 01:00:15,330 Amma ən azı GCC ildə - Ben fərz cingilti bunu edir - 737 01:00:15,330 --> 01:00:18,180 Bu yalnız 0s olmaq üçün bütün array başlamaq olacaq. 738 01:00:18,180 --> 01:00:25,320 Mən bunu istəmirəm Belə ki, sonra ayrıca edə (int i = 0; 739 01:00:25,320 --> 01:00:31,500 i 01:00:35,260 Belə ki, indi hər şey 0 başlatılmış olunur. 741 01:00:35,260 --> 01:00:39,570 Mən array üzərində təkrarlamaq 742 01:00:39,570 --> 01:00:51,920 və nə edirəm mən hər sayını hesablamaq edirəm ki, - burada enmək edək. 743 01:00:51,920 --> 01:00:55,480 Biz 4, 15, 16, 50, 8, 23, 42, 108 var. 744 01:00:55,480 --> 01:01:00,010 Mən hesablanması edirəm bu elementlərin hər halları sayı. 745 01:01:00,010 --> 01:01:03,470 Nin həqiqətən bəzi təkrar burada bir neçə əlavə edək. 746 01:01:03,470 --> 01:01:11,070 Biz burada dəyəri Belə ki, dəyəri [i] array olacaq. 747 01:01:11,070 --> 01:01:14,850 Belə ki, val 4 və ya 8 və ya hər hansı ola bilər. 748 01:01:14,850 --> 01:01:18,870 İndi mən gördüm nə qədər ki, dəyəri hesablanması alıram 749 01:01:18,870 --> 01:01:21,230 sayar belə [val] + +; 750 01:01:21,230 --> 01:01:29,430 Bunu sonra sayar 0001 kimi bir şey baxmaq niyyətindədir. 751 01:01:29,430 --> 01:01:42,190 Sayar nə edək [val] - + 1 almalıdır. 752 01:01:42,190 --> 01:01:48,230 >> İndi biz 0-dan başlayaraq edirik ki, hesablamaq üçün yalnız var. 753 01:01:48,230 --> 01:01:50,850 Belə ki, əgər 200, bizim ən çox olacaq 754 01:01:50,850 --> 01:01:54,720 sonra 0 200 201 şeylər edir. 755 01:01:54,720 --> 01:02:01,540 Bir 4 Çünki sayar Belə ki, 00001 kimi baxmaq lazımdır. 756 01:02:01,540 --> 01:02:10,210 Sonra biz sayı 8 indeksinin 1 olacaq yerləşir 0001 lazımdır. 757 01:02:10,210 --> 01:02:14,560 Biz sayı 23 indeksinin 2 olacaq. 758 01:02:14,560 --> 01:02:17,630 Biz sayı 42 indeksinin 2 olacaq. 759 01:02:17,630 --> 01:02:21,670 Beləliklə, biz count istifadə edə bilərsiniz. 760 01:02:34,270 --> 01:02:44,920 Belə num_of_item = sayar [i]. 761 01:02:44,920 --> 01:02:52,540 Və num_of_item 2 belə, biz sayı i 2 daxil etmək istəyirəm o deməkdir ki, 762 01:02:52,540 --> 01:02:55,290 bizim sıralanır array daxil. 763 01:02:55,290 --> 01:03:02,000 Belə ki, biz array daxil nə qədər takip lazımdır. 764 01:03:02,000 --> 01:03:05,470 Belə ki, index = 0. 765 01:03:05,470 --> 01:03:09,910 Array - Mən yalnız yazmaq lazımdır. 766 01:03:16,660 --> 01:03:18,020 Nömrəsi - 767 01:03:19,990 --> 01:03:28,580 array [index + +] = i; 768 01:03:28,580 --> 01:03:32,490 Mən istəyirəm nə ki? Hesab edirəm ki, mən istədiyiniz nə hesab edirəm. 769 01:03:35,100 --> 01:03:38,290 Bəli, bu yaxşı görünür. Okay. 770 01:03:38,290 --> 01:03:43,050 Belə ki, hər kəs mənim sayar array məqsədi nə başa düşmək olur? 771 01:03:43,050 --> 01:03:48,140 Bu ədəd hər halları sayı hesablanması edir. 772 01:03:48,140 --> 01:03:51,780 Sonra ki, sayıları array üzərində iterating am 773 01:03:51,780 --> 01:03:57,190 və sayıları array ildə İTH mövqe 774 01:03:57,190 --> 01:04:01,930 mənim sıralanır array görünür ki i var sayı. 775 01:04:01,930 --> 01:04:06,840 4 sayar 1 olacaq Ona görə 776 01:04:06,840 --> 01:04:11,840 və 8 sayar 1 olacaq, 23 sayar 2 olacaq. 777 01:04:11,840 --> 01:04:16,900 Belə ki mən sıralanır array daxil istəyirəm necə onları bir çox var. 778 01:04:16,900 --> 01:04:19,200 Mən yalnız bunu. 779 01:04:19,200 --> 01:04:28,960 Mən mənim sıralanır massivinə var num_of_item daxil edirəm. 780 01:04:28,960 --> 01:04:31,670 >> Suallar? 781 01:04:32,460 --> 01:04:43,100 Biz yalnız bir dəfə bu artıq iterating çünki Və yenidən, bu, xətti dəfə 782 01:04:43,100 --> 01:04:47,470 lakin, bu sayı nə də xətti var 783 01:04:47,470 --> 01:04:50,730 və belə ağır sizin bağlı nə asılıdır. 784 01:04:50,730 --> 01:04:53,290 200 bound ilə ki, pis deyil. 785 01:04:53,290 --> 01:04:58,330 Sizin bound 10,000 olacaq, onda ki, bir az pis 786 01:04:58,330 --> 01:05:01,360 Sizin bound, 4 milyard olacaq amma tamamilə real deyil 787 01:05:01,360 --> 01:05:07,720 və bu serialın gerçək olan ölçüsü 4 milyard olmaq üçün gedir. 788 01:05:07,720 --> 01:05:10,860 Belə ki, var. Suallar? 789 01:05:10,860 --> 01:05:13,270 [Işitilemez tələbə cavab] >> OK. 790 01:05:13,270 --> 01:05:15,710 Biz keçir zaman mən başqa bir şey həyata keçirilir. 791 01:05:17,980 --> 01:05:23,720 Mən problem Lucas və yəqin ki, biz gördük hər biri idi. 792 01:05:23,720 --> 01:05:26,330 Mən tamamilə unuttum. 793 01:05:26,330 --> 01:05:31,040 Mən şərh istədi yalnız odur ki, siz göstəriciləri kimi şeyi ilə məşğul olduğunuz zaman 794 01:05:31,040 --> 01:05:38,320 Siz loop üçün yazılı etdiyiniz zaman siz, həqiqətən, bu görmək heç 795 01:05:38,320 --> 01:05:41,120 lakin texniki, zaman, bu göstəriciləri ilə məşğul olduğunuz 796 01:05:41,120 --> 01:05:45,950 Siz olduqca çox həmişə imzalanmamış integers ilə məşğul olmalıdır. 797 01:05:45,950 --> 01:05:53,850 Əgər imzalanmış integers ilə məşğul olduğunuz zaman bu səbəb deyil 798 01:05:53,850 --> 01:05:56,090 2 imzalanmış integers var və onlara birlikdə əlavə əgər 799 01:05:56,090 --> 01:06:00,640 və onlar çox böyük başa, sonra bir mənfi sıra son. 800 01:06:00,640 --> 01:06:03,410 Belə ki, tam daşqın nə var. 801 01:06:03,410 --> 01:06:10,500 >> I 2 milyard, 1 milyard əlavə, mən mənfi 1 milyard son. 802 01:06:10,500 --> 01:06:15,480 Bu integers kompüter iş necə. 803 01:06:15,480 --> 01:06:17,510 Istifadə ilə problem Beləliklə - 804 01:06:17,510 --> 01:06:23,500 Bu, aşağı 2 milyard olur istisna olmaqla, gözəl və qədər 1 milyard olur 805 01:06:23,500 --> 01:06:27,120 bu 1 milyard mənfi olacaq və sonra biz bölmək olacaq ki, 2 ilə 806 01:06:27,120 --> 01:06:29,730 və mənfi 500 milyon ilə başa. 807 01:06:29,730 --> 01:06:33,760 Belə ki, bu bir sıra vasitəsilə axtarış üçün baş, əgər yalnız bir məsələ 808 01:06:33,760 --> 01:06:38,070 şeyi milyardlarla. 809 01:06:38,070 --> 01:06:44,050 Aşağı + qədər daşqın olur əgər Ancaq sonra bir problem var. 810 01:06:44,050 --> 01:06:47,750 Kimi tezliklə biz onları imzasız etmək, sonra 2 milyard plus 1 milyard 3 mlrd. 811 01:06:47,750 --> 01:06:51,960 2 bölünür 3 milyard 1,5 mlrd. 812 01:06:51,960 --> 01:06:55,670 Onlar imzasız edirik ki, tezliklə, hər şey idealdır. 813 01:06:55,670 --> 01:06:59,900 Siz loops üçün yazıyoruz zaman ki, həmçinin bir məsələdir 814 01:06:59,900 --> 01:07:03,940 və həqiqətən, yəqin ki, avtomatik olaraq bunu edir. 815 01:07:09,130 --> 01:07:12,330 Bu, faktiki olaraq yalnız siz fəğan edəcək. 816 01:07:12,330 --> 01:07:21,610 Bu sayı yalnız bir tam olmaq çox böyük amma əgər Belə ki, bir imzasız tam uyğun olardı 817 01:07:21,610 --> 01:07:24,970 bu da fəğan, siz həqiqətən məsələ daxil heç nə ki, belə. 818 01:07:29,150 --> 01:07:34,820 Siz, bir index mənfi olacaq heç vaxt görə bilərsiniz 819 01:07:34,820 --> 01:07:39,220 və belə ki, bir sıra üzərində iterating etdiyiniz zaman 820 01:07:39,220 --> 01:07:43,970 demək olar ki, həmişə i int imzasız deyə bilərsiniz, ancaq siz həqiqətən yoxdur. 821 01:07:43,970 --> 01:07:47,110 Things kimi də olduqca çox iş gedir. 822 01:07:48,740 --> 01:07:50,090 Okay. [Fısıltıyla] Nə vaxt? 823 01:07:50,090 --> 01:07:54,020 Və yalnız həqiqətən sürətli edəcəyik - Mən göstərmək istədim son şey. 824 01:07:54,020 --> 01:08:03,190 Siz biz # 5 və ya bir şey kimi MAX müəyyən edə bilərsiniz ki, biz # müəyyən necə bilirik? 825 01:08:03,190 --> 01:08:05,940 MAX nə edək. # 200 kimi bağlı müəyyən. Yəni biz əvvəl nə var. 826 01:08:05,940 --> 01:08:10,380 Yalnız kopyalanamaz və yapışdırılır olacaq bir sabit, müəyyən 827 01:08:10,380 --> 01:08:13,010 biz bağlı yazmaq nə yerdə. 828 01:08:13,010 --> 01:08:18,189 >> Belə ki, biz, həqiqətən, # müəyyənləşdirir daha çox edə bilərsiniz. 829 01:08:18,189 --> 01:08:21,170 Biz # funksiyaları müəyyən edə bilərsiniz. 830 01:08:21,170 --> 01:08:23,410 Onlar, həqiqətən, funksiyaları deyilik, amma biz onlara funksiyaları zəng edəcəyik. 831 01:08:23,410 --> 01:08:36,000 Məsələn MAX (x, y) kimi bir şey olardı (?: X x 01:08:40,660 Beləliklə, ternary operator syntax istifadə almaq lazımdır 833 01:08:40,660 --> 01:08:49,029 lakin x y azdır? Y qayıt başqa x qayıtmaq. 834 01:08:49,029 --> 01:08:54,390 Belə ki, bu ayrı bir funksiyası edə bilərsiniz 835 01:08:54,390 --> 01:09:01,399 bool MAX 2 arqumentlər edir kimi və funksiya ola bilər, bu qaytarın. 836 01:09:01,399 --> 01:09:08,340 Bu kimi işlər görürəm ən ümumi olanları biridir. Biz onların makro çağırırıq. 837 01:09:08,340 --> 01:09:11,790 Bu makro edir. 838 01:09:11,790 --> 01:09:15,859 Bu yalnız bunun üçün sintaksis edir. 839 01:09:15,859 --> 01:09:18,740 Siz istədiyiniz nə üçün makro yaza bilərsiniz. 840 01:09:18,740 --> 01:09:22,649 Siz tez-tez printfs və stuff ayıklama üçün makro görürük. 841 01:09:22,649 --> 01:09:29,410 Printf növü Belə ki, vurğulamaq LINE vurğulamaq kimi C xüsusi sabitləri var 842 01:09:29,410 --> 01:09:31,710 2, LINE vurğulamaq vurğulayır 843 01:09:31,710 --> 01:09:37,550 və I 2 FUNC vurğulayır düşünmək də var. Bu ola bilər. Kimi bir şey. 844 01:09:37,550 --> 01:09:40,880 Həmin şeylər funksiyası adı ilə əvəz olunacaq 845 01:09:40,880 --> 01:09:42,930 və ya siz olduğunuzu line sayı. 846 01:09:42,930 --> 01:09:48,630 Tez-tez aşağı burada mən yalnız yazmaq ki, hata printfs yazmaq 847 01:09:48,630 --> 01:09:54,260 Debug və xətt nömrəsi və mən olmaq baş verən funksiyası çap edəcək 848 01:09:54,260 --> 01:09:57,020 ki debug bəyanat rast edir. 849 01:09:57,020 --> 01:09:59,550 Və siz də başqa şeylər çap edə bilərsiniz. 850 01:09:59,550 --> 01:10:05,990 Beləliklə, siz diqqət etsinlər bir şey I # DOUBLE_MAX müəyyən baş əgər 851 01:10:05,990 --> 01:10:11,380 2 * y və 2 kimi bir şey kimi * x. 852 01:10:11,380 --> 01:10:14,310 Belə ki, hər hansı səbəbdən, bir çox bunu baş verir. 853 01:10:14,310 --> 01:10:16,650 Belə ki, makro etmək. 854 01:10:16,650 --> 01:10:18,680 Bu əslində pozuldu. 855 01:10:18,680 --> 01:10:23,050 Mən DOUBLE_MAX (3, 6) kimi bir şey etməklə zəng olardı. 856 01:10:23,050 --> 01:10:27,530 Belə ki, nə qaytarılmalıdır? 857 01:10:28,840 --> 01:10:30,580 [Tələbə] 12. 858 01:10:30,580 --> 01:10:34,800 Bəli, 12 qaytarılmalıdır, 12 qaytarılır. 859 01:10:34,800 --> 01:10:43,350 3 x ilə əvəz olur, 6 y üçün əvəz və biz 12 olan 2 * 6, geri olur. 860 01:10:43,350 --> 01:10:47,710 İndi nə bu? Nə geri olmalıdır? 861 01:10:47,710 --> 01:10:50,330 [Tələbə] 14. >> İdeal, 14. 862 01:10:50,330 --> 01:10:55,290 Bu məsələ işin müəyyən necə hash, bir hərfi surəti və yapışdırıb var unutmayın ki, 863 01:10:55,290 --> 01:11:00,160 olduqca çox hər şey, belə ki, nə bu kimi təfsir edilə gedir 864 01:11:00,160 --> 01:11:11,270 1 plus 6, 2 dəfə 1 plus 6, 2 dəfə 3-dən 3 azdır. 865 01:11:11,270 --> 01:11:19,780 >> Belə ki, bu səbəbdən demək olar ki, həmişə mötərizədə hər şeyi kesmek. 866 01:11:22,180 --> 01:11:25,050 Demək olar ki, həmişə mötərizədə bükələnmək hər hansı dəyişən. 867 01:11:25,050 --> 01:11:29,570 Mən burada bunu etmək lazım deyil ki, bilmək kimi yoxdur hallar var, 868 01:11:29,570 --> 01:11:32,110 az olduğu üçün olduqca çox zaman yalnız iş gedir, 869 01:11:32,110 --> 01:11:34,330 baxmayaraq ki, hətta doğru ola bilər. 870 01:11:34,330 --> 01:11:41,870 DOUBLE_MAX (1 == 2) kimi gülünc bir şey varsa, 871 01:11:41,870 --> 01:11:49,760 sonra 3-dən az 1 ilə əvəz almaq olacaq ki, 2 bərabərdir bərabərdir 872 01:11:49,760 --> 01:11:53,460 və belə sonra ki, bərabər 2, 1-dən 3 az nə yazmayıb olacaq 873 01:11:53,460 --> 01:11:55,620 olan biz istədiyiniz nə deyil. 874 01:11:55,620 --> 01:12:00,730 Belə ki, hər hansı operator üstün problemlərin qarşısını almaq üçün, 875 01:12:00,730 --> 01:12:02,870 həmişə parantez bükələnmək. 876 01:12:03,290 --> 01:12:07,700 Okay. Və bu, 5:30 bu. 877 01:12:08,140 --> 01:12:12,470 Siz pset hər hansı bir sualınız varsa, bizə bildirin. 878 01:12:12,470 --> 01:12:18,010 Bu fun olmalıdır və hacker nəşr də daha realdır 879 01:12:18,010 --> 01:12:22,980 Ötən il də hacker nəşr daha sizə bir çox cəhd ümid edirik. 880 01:12:22,980 --> 01:12:26,460 Ötən il çox böyük idi. 881 01:12:28,370 --> 01:12:30,000 >> [CS50.TV]