1 00:00:00,000 --> 00:00:11,100 >> [მუსიკალური სათამაშო] 2 00:00:11,100 --> 00:00:11,490 >> დევიდ ჯ Malan ყველა უფლება. 3 00:00:11,490 --> 00:00:12,170 ასე რომ კეთილი იყოს უკან. 4 00:00:12,170 --> 00:00:15,180 ეს არის CS50 და არის ბოლოს კვირაში სამი. 5 00:00:15,180 --> 00:00:17,770 >> ასე იხსენებენ ამ ბოლო რამდენიმე კვირის განმავლობაში, ჩვენ ბევრი ხარჯვის საკმაოდ ცოტა 6 00:00:17,770 --> 00:00:20,820 დროის C, პროგრამირებაში, on სინტაქსი. 7 00:00:20,820 --> 00:00:24,680 და ეს სავსებით ნორმალურია, თუ თქვენ ჯერ კიდევ ბრძოლა პრობლემა Set 2, უნდა იყოს 8 00:00:24,680 --> 00:00:25,950 banging თქვენი უფროსი წინააღმდეგ კედელზე. 9 00:00:25,950 --> 00:00:28,310 ეს cryptic ლამაზი შეცდომის შეტყობინებები შეცდომებს, რომ თქვენ 10 00:00:28,310 --> 00:00:29,220 ვერ საკმაოდ აყვანას ქვემოთ. 11 00:00:29,220 --> 00:00:32,310 იმის გამო, რომ დანარჩენი დავრწმუნდი, რომ სულ რაღაც რამდენიმე კვირის "დრო თქვენ ვიხსენებთ 12 00:00:32,310 --> 00:00:35,930 რამ, როგორიცაა კეისრისა და [? V-genair,?] შესაძლოა, ბზარი და 13 00:00:35,930 --> 00:00:40,050 გააცნობიეროს, თუ რამდენად შორს თქვენ მოვიდა ამ მოკლე პერიოდში. 14 00:00:40,050 --> 00:00:43,670 ასე რომ, თუ ეს რომელიმე ნუგეში, დევს იქ არის. 15 00:00:43,670 --> 00:00:46,610 >> დღეს, თუმცა, ჩვენ ვიწყებთ გარდამავალ რამ უფრო მაღალ დონეზე. 16 00:00:46,610 --> 00:00:49,820 და ჩვენ დავიწყებთ თავისთავად, რომ თქვენ ბიჭები ვიცი როგორ უნდა პროგრამას, ან 17 00:00:49,820 --> 00:00:52,090 მინიმუმ დასაწყისი რომ კომფორტს დონეზე. 18 00:00:52,090 --> 00:00:56,520 და ჩვენ დავიწყებთ განიხილავს, თუ როგორ შეგვიძლია წავიდეთ შესახებ შექმნასა პროგრამების მეტი 19 00:00:56,520 --> 00:00:57,440 ეფექტურად. 20 00:00:57,440 --> 00:01:01,090 როგორ შეგვიძლია წავიდეთ შესახებ ოპტიმიზაციის ეფექტურობის ჩვენი ალგორითმები და 21 00:01:01,090 --> 00:01:03,110 ზოგადად გადაჭრის მეტი საინტერესო პრობლემები. 22 00:01:03,110 --> 00:01:06,850 ხოლო დაწყებული უნდა თავისთავად, რომ თუ გვინდოდა, ჩვენ ვერ კოდი ნებისმიერი 23 00:01:06,850 --> 00:01:08,350 მაგალითი გვაქვს გონება. 24 00:01:08,350 --> 00:01:11,430 ასე რომ, დღეს, ჩვენ არ შეეხოთ keyboard ნებისმიერი სახით კოდი. 25 00:01:11,430 --> 00:01:15,150 ეს იქნება ბევრად უფრო მაღალ დონეზე, და საბოლოო ჯამში, დაახლოებით პრობლემის გადაჭრაზე. 26 00:01:15,150 --> 00:01:20,490 >> ასე რომ მიიღოს, რომ წერტილი, მინდა შესთავაზოს რომ შემდეგ შვიდი 27 00:01:20,490 --> 00:01:24,290 ოთხკუთხედს წარმოადგენს შვიდი კარები, უკან რომლებიც მთელი bunch of 28 00:01:24,290 --> 00:01:26,340 ნომრები, რომელთა შორის არის რიცხვი 50. 29 00:01:26,340 --> 00:01:30,470 ნება მომეცით პროექტის ამ ამ ეკრანზე აქ ასევე. 30 00:01:30,470 --> 00:01:36,770 და შესთავაზოს, რომ ჩვენ გვჭირდება მოხალისე, რათა დაგეხმაროთ me ნომერი შენობის წინ 31 00:01:36,770 --> 00:01:38,140 ინტერნეტ აქ. 32 00:01:38,140 --> 00:01:40,755 კარგით up, in ვარდისფერი. 33 00:01:40,755 --> 00:01:43,050 ყველა უფლება. 34 00:01:43,050 --> 00:01:43,930 რა არის შენი სახელი? 35 00:01:43,930 --> 00:01:44,850 >> JENNIFER: [inaudible] 36 00:01:44,850 --> 00:01:45,170 >> დევიდ ჯ Malan: უკაცრავად? 37 00:01:45,170 --> 00:01:45,860 >> JENNIFER: Jennifer. 38 00:01:45,860 --> 00:01:46,390 >> დევიდ ჯ Malan: Jennifer. 39 00:01:46,390 --> 00:01:46,980 ყველა უფლება, ჯენიფერი. 40 00:01:46,980 --> 00:01:47,630 კარგია თქვენთან შეხვედრა. 41 00:01:47,630 --> 00:01:48,370 კარგით up. 42 00:01:48,370 --> 00:01:52,430 ამიტომ აქ შვიდი კარები, და რა მინდა თქვენ ამის უფლება გვაქვს, 43 00:01:52,430 --> 00:01:56,560 წინაშე ყველა თქვენი თანაკლასელები, არის ჩვენი ნომერი, 50. 44 00:01:56,560 --> 00:02:00,860 იპოვოს ნომერი, შეგიძლიათ peek უკან ნებისმიერი ამ კარს უბრალოდ მოსმენების 45 00:02:00,860 --> 00:02:03,030 ერთი კარები, და ეს გამოავლენს თავისი ნომერი. 46 00:02:03,030 --> 00:02:06,080 და ვნახოთ, რამდენად სწრაფად თქვენ შეიძლება ჩვენი ნომერი, 50. 47 00:02:06,080 --> 00:02:09,979 48 00:02:09,979 --> 00:02:11,229 >> 15. 49 00:02:11,229 --> 00:02:13,110 50 00:02:13,110 --> 00:02:14,360 16. 51 00:02:14,360 --> 00:02:16,270 52 00:02:16,270 --> 00:02:16,530 50. 53 00:02:16,530 --> 00:02:17,350 ლამაზად კეთდება. 54 00:02:17,350 --> 00:02:18,040 ყველა უფლება. 55 00:02:18,040 --> 00:02:19,906 რაუნდი ტაში for Jennifer. 56 00:02:19,906 --> 00:02:21,530 >> [ტაში] 57 00:02:21,530 --> 00:02:22,320 >> ყველა უფლება. 58 00:02:22,320 --> 00:02:25,254 ასე რომ, რა იყო თქვენი სტრატეგია მოძიებაში ნომერი, 50? 59 00:02:25,254 --> 00:02:27,222 >> JENNIFER: Um, ვფიქრობდი, იქნებ, თუ - 60 00:02:27,222 --> 00:02:27,714 [Inaudible] 61 00:02:27,714 --> 00:02:28,206 >> დევიდ ჯ Malan: Oh. 62 00:02:28,206 --> 00:02:29,630 მისთვის ერთი მეორე. 63 00:02:29,630 --> 00:02:32,420 ასე იყო თქვენი სტრატეგია მოძიებაში ნომერი, 50? 64 00:02:32,420 --> 00:02:34,760 >> JENNIFER: ასე რომ მე მხოლოდ იწყება დაწყებული, თუ რას პირველი ნომერი 65 00:02:34,760 --> 00:02:38,590 იყო, და მერე ვიფიქრე, იქნებ, თუ ისინი დახარისხებული, მე მხოლოდ შენარჩუნება 66 00:02:38,590 --> 00:02:39,970 მოსმენების უმაღლესი up? 67 00:02:39,970 --> 00:02:40,140 >> დევიდ ჯ Malan: OK. 68 00:02:40,140 --> 00:02:42,910 და ჩვენ, როგორც ჩანს, არ ი რომ იყოს საქმე. 69 00:02:42,910 --> 00:02:45,670 მიუხედავად იმისა, რომ, მოდით, კანი უკან ფენების უბრალოდ ცოტა და მინდა 70 00:02:45,670 --> 00:02:47,640 წინ და გამოვლენა სხვა კარი თქვენ ვერ ავირჩიეთ? 71 00:02:47,640 --> 00:02:50,400 72 00:02:50,400 --> 00:02:51,712 >> JENNIFER: Oh, ძვირფასო. 73 00:02:51,712 --> 00:02:53,128 >> დევიდ ჯ Malan: Ah. 74 00:02:53,128 --> 00:02:54,280 >> JENNIFER: ასე რომ უბრალოდ მიიღო გაუმართლა. 75 00:02:54,280 --> 00:02:55,270 >> დევიდ ჯ Malan: ასე რომ შენ გაუმართლა. 76 00:02:55,270 --> 00:02:55,710 ყველა უფლება. 77 00:02:55,710 --> 00:02:56,795 ასე რომ ცუდი არ არის. 78 00:02:56,795 --> 00:02:58,750 მაგრამ ეს საინტერესო რისთვისაც, არა? 79 00:02:58,750 --> 00:03:01,870 თუ თქვენ აიღო და გააკეთეთ მისაღებად, მართლაც, ცოტა გაუმართლა არსებობს. 80 00:03:01,870 --> 00:03:05,350 მაგრამ თუ თქვენ ვივარაუდოთ, რომ ნომრები დახარისხებული, შეგიძლიათ უფრო ზუსტად 81 00:03:05,350 --> 00:03:08,750 თუ როგორ, რომ გავლენა მოახდინა თქვენი საქციელი? 82 00:03:08,750 --> 00:03:11,715 >> JENNIFER: ასე რომ თუ ისინი დახარისხებული, I ეგონა, შესაძლოა, პატარა რომ ყველაზე დიდი. 83 00:03:11,715 --> 00:03:11,970 >> დევიდ ჯ Malan: OK. 84 00:03:11,970 --> 00:03:15,260 >> JENNIFER: ან თუ ეს დასრულდა მიმდინარეობს მართლაც დიდი, მაშინ უდიდეს რომ პატარა. 85 00:03:15,260 --> 00:03:15,540 >> დევიდ ჯ Malan: OK. 86 00:03:15,540 --> 00:03:18,170 ასე რომ, ყველაზე დიდი, რომ ყველაზე პატარა, ან პატარა რომ ყველაზე დიდი. 87 00:03:18,170 --> 00:03:21,990 მაგრამ ნება მიბოძეთ შესთავაზოს, ვარაუდობენ, თქვენ ჰქონდა მიღებული უბედური, და ვარაუდობენ, რომ ისინი 88 00:03:21,990 --> 00:03:26,840 არ იყო, ფაქტობრივად, დალაგებულია, რამდენი იმ კარს, შესაძლოა, თქვენ არ მოუხდა peek 89 00:03:26,840 --> 00:03:28,590 უკან რომ უარეს შემთხვევაში? 90 00:03:28,590 --> 00:03:29,860 >> JENNIFER: ყველა მათგანი. 91 00:03:29,860 --> 00:03:30,420 >> დევიდ ჯ Malan ყველა მათგანი. 92 00:03:30,420 --> 00:03:31,740 მოდით განზოგადება, რომ როგორც ო. 93 00:03:31,740 --> 00:03:34,790 არსებობს ხდება, რომ 7, ​​მაგრამ უფრო ზოგადად ამბობენ, რომ არსებობს n კარი 94 00:03:34,790 --> 00:03:35,650 ეკრანზე აქ. 95 00:03:35,650 --> 00:03:40,110 ასე რომ, უარეს შემთხვევაში, თქვენ უნდა თვალი უკან 7 კარები, ან ო კარი. 96 00:03:40,110 --> 00:03:44,140 ასე რომ, ეს ნამდვილად არის, ეს ცოტა გისურვებთ დღეს, მაგრამ ეს ნამდვილად წრფივი 97 00:03:44,140 --> 00:03:46,440 ალგორითმი სახის, მიუხედავად იმისა, რომ თქვენ იყო ასეთი skipping გარშემო. 98 00:03:46,440 --> 00:03:47,080 ის არის, რომ სამართლიანი? 99 00:03:47,080 --> 00:03:47,500 >> JENNIFER: ჰო. 100 00:03:47,500 --> 00:03:50,000 >> დევიდ ჯ Malan: პირველ რიგში, ნება მომეცით, რომ თქვენი სტრატეგია ცვლილებები თუ მე გადაადგილება us to 101 00:03:50,000 --> 00:03:52,190 ჩვენი მეორე მაგალითი აქ 7 სხვადასხვა კარები. 102 00:03:52,190 --> 00:03:55,240 ისეთი რაოდენობით, მაგრამ ეს დრო ისინი დახარისხებული. 103 00:03:55,240 --> 00:03:58,350 რა არის თქვენი სტრატეგიის აქ იქნება, ცდილობს დააყენა თქვენი გონება რა 104 00:03:58,350 --> 00:03:59,310 რა ნომრებზე იყო - 105 00:03:59,310 --> 00:03:59,930 >> JENNIFER: OK. 106 00:03:59,930 --> 00:04:02,290 >> დევიდ ჯ Malan: - ადრე? 107 00:04:02,290 --> 00:04:03,180 >> JENNIFER: დავიწყოთ პირველი ერთი. 108 00:04:03,180 --> 00:04:03,540 >> დევიდ ჯ Malan ყველა უფლება. 109 00:04:03,540 --> 00:04:05,190 დაწყება პირველი. 110 00:04:05,190 --> 00:04:05,960 4. 111 00:04:05,960 --> 00:04:08,810 ახლა, თუ სად აპირებს წავიდეს, და რატომ? 112 00:04:08,810 --> 00:04:10,040 >> JENNIFER: 4 მართლაც პატარა. 113 00:04:10,040 --> 00:04:12,500 ასე რომ, თუ ისინი ერთგვარი იქნებ პატარა to ყველაზე დიდი, უნდა 114 00:04:12,500 --> 00:04:13,290 იყოს ორჯერ, რომ და -. 115 00:04:13,290 --> 00:04:13,670 >> დევიდ ჯ Malan: OK. 116 00:04:13,670 --> 00:04:15,990 ვნახოთ, რომელიც, თქვენი აზრით? 117 00:04:15,990 --> 00:04:19,050 >> JENNIFER: სცადეთ ბოლო. 118 00:04:19,050 --> 00:04:19,500 ლამაზი. 119 00:04:19,500 --> 00:04:20,880 >> დევიდ ჯ Malan: ძალიან ლამაზად კეთდება. 120 00:04:20,880 --> 00:04:21,860 ყველა უფლება. 121 00:04:21,860 --> 00:04:23,010 >> [ტაში] 122 00:04:23,010 --> 00:04:24,310 >> დევიდ ჯ Malan: OK. 123 00:04:24,310 --> 00:04:26,790 ასე რომ თქვენ რეალურად აკეთებს ამ horribly, იმიტომ, რომ თქვენ 124 00:04:26,790 --> 00:04:27,700 ამის ძალიან კარგად. 125 00:04:27,700 --> 00:04:31,150 რომელ გვიტოვებს ვერ გარკვეული რაოდენობა. 126 00:04:31,150 --> 00:04:32,565 მოდით ცდილობენ გააფართოვოს უკან აქ. 127 00:04:32,565 --> 00:04:34,560 >> JENNIFER: OK. 128 00:04:34,560 --> 00:04:35,980 >> დევიდ ჯ Malan: ძალიან კარგად კეთდება, მაინც. 129 00:04:35,980 --> 00:04:39,060 ასე რომ დაიწყო თავიდან, თქვენ ნახეთ, რომ ეს იყო 4, მაშინ 130 00:04:39,060 --> 00:04:40,240 გადავიდა ბოლომდე. 131 00:04:40,240 --> 00:04:42,320 თუმცა ვარაუდობენ, თქვენ ვერ გაუმართლა არსებობს და ვარაუდობენ, 50 132 00:04:42,320 --> 00:04:42,890 იყო სხვაგან. 133 00:04:42,890 --> 00:04:46,190 რა თქვენი მესამე ნაბიჯი იქნებოდა? 134 00:04:46,190 --> 00:04:47,680 >> JENNIFER: დაბრუნება დასაწყისში. 135 00:04:47,680 --> 00:04:48,320 >> დევიდ ჯ Malan: დაბრუნება დასაწყისში. 136 00:04:48,320 --> 00:04:51,320 OK, ასე რომ თქვენ, რომ მე შეეხო ეს კარი, რომელიც 8. 137 00:04:51,320 --> 00:04:51,660 ყველა უფლება. 138 00:04:51,660 --> 00:04:52,650 ასე რომ, ეს არ არის 50. 139 00:04:52,650 --> 00:04:55,380 სად იქნებოდა თქვენ არ ჩანდა შემდეგი? 140 00:04:55,380 --> 00:04:56,720 >> JENNIFER: თუ არ იცოდნენ, რომ გადანაწილებული. 141 00:04:56,720 --> 00:04:57,005 >> დევიდ ჯ Malan: სწორი. 142 00:04:57,005 --> 00:04:58,490 კარგად, თუ იცოდნენ ისინი დახარისხებული - 143 00:04:58,490 --> 00:04:58,700 >> JENNIFER: Oh, იცოდნენ, ჰო. 144 00:04:58,700 --> 00:05:00,910 >> დევიდ ჯ Malan: - მაგრამ თქვენ არ ვიცი, სადაც 50 იყო კიდევ? 145 00:05:00,910 --> 00:05:01,785 >> JENNIFER: უბრალოდ შენარჩუნებას აპირებს. 146 00:05:01,785 --> 00:05:02,130 >> დევიდ ჯ Malan ყველა უფლება. 147 00:05:02,130 --> 00:05:02,520 OK. 148 00:05:02,520 --> 00:05:03,800 შენარჩუნებას აპირებს. 149 00:05:03,800 --> 00:05:05,270 კარგი, რომ შემიძლია მუშაობა. 150 00:05:05,270 --> 00:05:05,610 >> JENNIFER: OK. 151 00:05:05,610 --> 00:05:07,210 >> დევიდ ჯ Malan: ახლა კი, თუ უბრალოდ მიმდინარეობს შენარჩუნებას აპირებს, რა არის თქვენი 152 00:05:07,210 --> 00:05:09,680 ალგორითმი devolving მხარს უჭერს შევიდა. 153 00:05:09,680 --> 00:05:10,740 >> JENNIFER: წრფივი -. 154 00:05:10,740 --> 00:05:11,820 >> დევიდ ჯ Malan: ეს არის ერთგვარი წრფივი. 155 00:05:11,820 --> 00:05:13,480 მაგრამ ნება მიბოძეთ შესთავაზოს, ნება მიბოძეთ ადგილზე. 156 00:05:13,480 --> 00:05:14,900 ნება მომეცით ცარიელია გვერდზე. 157 00:05:14,900 --> 00:05:17,120 იგივე რაოდენობა, იმავე მოწყობა, იგივე კარები. 158 00:05:17,120 --> 00:05:21,350 მაგრამ ვფიქრობ უკან რომ პირველი დღე კლასში როდესაც ჩვენ დახიეს ტელეფონი წიგნი 159 00:05:21,350 --> 00:05:25,480 ნახევარი, სახის, და რა იყო ჩვენი სტრატეგია იქ? 160 00:05:25,480 --> 00:05:26,450 >> JENNIFER: დაწყება შუა. 161 00:05:26,450 --> 00:05:26,690 >> დევიდ ჯ Malan: OK. 162 00:05:26,690 --> 00:05:27,610 ასე იწყება ცენტრიდან. 163 00:05:27,610 --> 00:05:28,790 მოდით წავიდეთ წინ და გამოსცადეთ, რომ. 164 00:05:28,790 --> 00:05:30,720 დაწყება შუა მიერ გამოვლენის, რომ კარი. 165 00:05:30,720 --> 00:05:31,660 ასე რომ, ნომერი 16. 166 00:05:31,660 --> 00:05:35,290 მაინც რაში ძლიერი ბიჭი არ კეთდება, ვინც გაწყვიტა სატელეფონო წიგნი ნახევარი, 167 00:05:35,290 --> 00:05:38,450 მიიღოს მომდევნო ვხვდები? 168 00:05:38,450 --> 00:05:39,400 >> JENNIFER: გადადით ამ ნახევარი. 169 00:05:39,400 --> 00:05:41,700 >> დევიდ ჯ Malan: და რატომ უნდა არა? 170 00:05:41,700 --> 00:05:43,900 >> JENNIFER: თუ ისინი ერთგვარი პატარა to ყველაზე დიდი, მაშინ 50 უნდა იყოს 171 00:05:43,900 --> 00:05:44,720 იმ ბოლომდე. 172 00:05:44,720 --> 00:05:44,920 >> დევიდ ჯ Malan: გარემონტებული. 173 00:05:44,920 --> 00:05:45,390 სრულიად საფუძვლიანია. 174 00:05:45,390 --> 00:05:48,380 ასე რომ, ისევე როგორც სატელეფონო წიგნი, წასვლა მარჯვენა განსხვავებით მარცხენა, მაგრამ აქ 175 00:05:48,380 --> 00:05:49,500 მთავარი takeaway. 176 00:05:49,500 --> 00:05:53,930 თქვენ შეგიძლიათ გადაყარეთ, ან გაანადგურეს off, ნახევარი ეს პრობლემა, რის გამოც თქვენ არ 177 00:05:53,930 --> 00:05:55,970 7 კარს, მაგრამ რეალურად მხოლოდ 3. 178 00:05:55,970 --> 00:05:57,870 რომელ დაახლოებით ნახევარი ზომის პრობლემა. 179 00:05:57,870 --> 00:05:58,350 ყველა უფლება. 180 00:05:58,350 --> 00:06:01,890 ასე რომ, ახლა, რას აქვს შემდეგ გაკეთდა თქვენ წავიდეთ უფლება? 181 00:06:01,890 --> 00:06:05,870 >> JENNIFER: ასე 16 ჯერ კიდევ საკმაოდ პატარა, შედარებით 50, იქნებ ვეცდები, 182 00:06:05,870 --> 00:06:06,700 ისევე, როგორც ეს ერთი. 183 00:06:06,700 --> 00:06:07,890 >> დევიდ ჯ Malan ყველა უფლება. 184 00:06:07,890 --> 00:06:08,720 42. 185 00:06:08,720 --> 00:06:10,830 ყველა უფლება, ასე რომ, ახლა რა არის თქვენი ინსტიქტი გეუბნებით? 186 00:06:10,830 --> 00:06:12,100 >> JENNIFER: მე ვერ გადააგდებს ამ და შემდეგ უბრალოდ - 187 00:06:12,100 --> 00:06:12,360 >> დევიდ ჯ Malan: OK. 188 00:06:12,360 --> 00:06:14,212 კარგი, შეგიძლიათ გადაყარეთ მარცხენა ნახევარში არსებობს. 189 00:06:14,212 --> 00:06:14,890 >> JENNIFER: - გააშუქა ეს ერთი. 190 00:06:14,890 --> 00:06:15,530 >> დევიდ ჯ Malan: და მარჯვნივ. 191 00:06:15,530 --> 00:06:15,760 >> JENNIFER: ჰო. 192 00:06:15,760 --> 00:06:17,820 >> დევიდ ჯ Malan: ასე რომ მიუხედავად იმისა, რომ ეს რთული სანახავად ალბათ, როდესაც იქ მხოლოდ 193 00:06:17,820 --> 00:06:21,320 7 კარები, ვიფიქროთ, ახლა, რესურესების 194 00:06:21,320 --> 00:06:22,620 ალგორითმი უბრალოდ გამოყენებული. 195 00:06:22,620 --> 00:06:24,510 In წინა შემთხვევაში, გააკეთეთ მიიღეთ გაუმართლა, რომელიც დიდი. 196 00:06:24,510 --> 00:06:26,540 მაგრამ თქვენ ამაზე გამოყენება heuristic, მე ვიტყოდი. 197 00:06:26,540 --> 00:06:29,150 გამოყენებულია სახის თქვენი ინსტინქტები და იცის ეს გადანაწილებული, თუ ეს საკმაოდ 198 00:06:29,150 --> 00:06:31,600 მცირე დასაწყისში, ბუნებრივია, ჩვენ მივიღე წასვლა უფრო მარჯვნივ. 199 00:06:31,600 --> 00:06:34,990 მაგრამ გარკვეული, თქვენ მიიღო გაუმართლა, იმიტომ, რომ, შესაძლოა, ეს იყო ნომერი 100, 200 00:06:34,990 --> 00:06:36,220 და შესაძლოა 50 უფრო ცენტრიდან. 201 00:06:36,220 --> 00:06:37,910 იქნებ 50 კიდევ მეტი აქ. 202 00:06:37,910 --> 00:06:40,960 >> მაგრამ რა გააკეთეთ თქვენ ცოტა განსხვავებულად ამ დროს იყო, გააკეთეთ იგივე 203 00:06:40,960 --> 00:06:42,150 ისევ და ისევ. 204 00:06:42,150 --> 00:06:45,310 და მე ამტკიცებენ, რომ რა უბრალოდ საერთოდ, თუმცა გავლენა მოახდინა ტელეფონი 205 00:06:45,310 --> 00:06:48,100 წიგნის მაგალითად, რაღაც ბევრად მეტი ალგორითმული, და ბევრი 206 00:06:48,100 --> 00:06:49,930 ნაკლებია, სპეციალური cased. 207 00:06:49,930 --> 00:06:51,620 გაცილებით ნაკლებია instinctive. 208 00:06:51,620 --> 00:06:57,160 ასე რომ, დღის ბოლომდე, როგორ თქვენ აღწერს ეფექტურობის 209 00:06:57,160 --> 00:07:00,530 პირველი ალგორითმი, სადაც თქვენ წავიდა მარცხნიდან მარჯვნივ, წინააღმდეგ 210 00:07:00,530 --> 00:07:03,430 მეორე ალგორითმი აქ? 211 00:07:03,430 --> 00:07:06,460 >> JENNIFER: ეს უნდა, ისევე როგორც, შესაძლოა, HALVE დროს, ან კიდევ უფრო, ჰო. 212 00:07:06,460 --> 00:07:07,320 >> დევიდ ჯ Malan: OK, შესაძლოა კიდევ უფრო. 213 00:07:07,320 --> 00:07:10,150 მოდით დააყენებს ცოტა რთული, რომ. 214 00:07:10,150 --> 00:07:13,030 რა, თუ ჩვენ გავაგრძელებთ ამ ლოგიკა, ჩვენ ნამდვილად განახევრდა 215 00:07:13,030 --> 00:07:15,830 გაშვებული დროის ამ მეორე ალგორითმი მიერ სროლა მოშორებით ნახევარში 216 00:07:15,830 --> 00:07:18,470 ნომრები, მაგრამ რა მივიღეთ ამის გაკეთება მომდევნო iteration, როდესაც Jennifer გამოვლინდა 217 00:07:18,470 --> 00:07:20,615 მეორე ნომერი? 218 00:07:20,615 --> 00:07:22,830 >> ჩვენ განახევრდა ნომრები კარი ერთხელ. 219 00:07:22,830 --> 00:07:25,270 და მაშინ რა მივიღეთ გააკეთებს მას შემდეგ, თუ აქ იყო უფრო კარ თამაში? 220 00:07:25,270 --> 00:07:27,520 ჩვენ გვინდა HALVE მათ, და კიდევ ერთხელ, და ისევ, და ისევ. 221 00:07:27,520 --> 00:07:30,420 და ეს იყო, ისევე, როგორც თქვენ ბიჭები ყველა იდგა up პირველ კვირას 222 00:07:30,420 --> 00:07:33,000 კლასი, ნახევარი თქვენ მაგიდასთან დაჯდომა, ნახევარი თქვენგანს დაჯდომა, ნახევარი თქვენგანი 223 00:07:33,000 --> 00:07:35,440 დაჯდომა, სანამ ერთ მარტოხელა სულის იდგა. 224 00:07:35,440 --> 00:07:39,050 და ჩვენ ვთქვით, რომ გაშვებული დრო ის, რომ მთელი რიგი ზომების დასჭირდა იყო 225 00:07:39,050 --> 00:07:40,430 ბრძანებით, თუ რა? 226 00:07:40,430 --> 00:07:41,230 >> დინამიკები 1: [inaudible] 227 00:07:41,230 --> 00:07:43,970 >> დევიდ ჯ Malan: ასე ჟურნალი ბაზა -2 n, ან უბრალოდ უფრო მარტივად, შესვლა of ო. 228 00:07:43,970 --> 00:07:45,060 ასე რომ რაღაც ლოგარითმული. 229 00:07:45,060 --> 00:07:48,380 ხოლო გრაფაში არ იყო სწორი ხაზი აღვნიშნავ, რომ დამძიმდა და უარესი, ეს იყო 230 00:07:48,380 --> 00:07:52,490 ამ საინტერესო მრუდი რომ არ მიიღეთ ისე ცუდია დროთა განმავლობაში. 231 00:07:52,490 --> 00:07:53,910 მოდით გამართავს შესახებ, რომ ამ იდეას. 232 00:07:53,910 --> 00:07:54,690 მოდით მადლობა გადავუხადო Jennifer. 233 00:07:54,690 --> 00:07:56,150 მადლობა იმდენად მომავალი up. 234 00:07:56,150 --> 00:07:57,400 ხოლო, ერთი წ. 235 00:07:57,400 --> 00:08:00,170 236 00:08:00,170 --> 00:08:02,925 არ სამაგიდო ნათურები დღეს, მაგრამ ჩვენ გვაქვს CS50 სტრესი ბურთები. 237 00:08:02,925 --> 00:08:03,420 >> JENNIFER: Yay. 238 00:08:03,420 --> 00:08:04,410 >> დევიდ ჯ Malan: ყველა უფლება, აქ. 239 00:08:04,410 --> 00:08:06,545 მადლობას გიხდით ხარჯების სტრესი აქ. 240 00:08:06,545 --> 00:08:07,350 ყველა უფლება. 241 00:08:07,350 --> 00:08:10,620 მოდით ვნახოთ, შევძლებთ თუ არა ახლა formalize ამ ცოტა მეტი. 242 00:08:10,620 --> 00:08:14,820 ასე რომ, კიდევ ერთხელ, რაც ჩვენ გავაკეთეთ იყო არსებითად იგივე როგორც ჩვენ გავაკეთეთ 243 00:08:14,820 --> 00:08:16,660 ამ პირველ კვირას. 244 00:08:16,660 --> 00:08:23,780 მაგრამ ვიდრე ბოლომდე მხოლოდ წრფივი ალგორითმი, რომელიც ჩვენ გამოსახული 245 00:08:23,780 --> 00:08:27,210 ადრე, როგორც ეს სწორი ხაზი, რომლის დროსაც, თუ ჩვენ კიდევ ერთი კარი 246 00:08:27,210 --> 00:08:29,610 ეკრანზე, და Jennifer აკეთებთ არ უნდა გამოიყურებოდეს, პოტენციურად, 247 00:08:29,610 --> 00:08:30,600 უკან კიდევ ერთი კარი. 248 00:08:30,600 --> 00:08:33,490 თუ ჩვენ კიდევ ორი ​​კარი, მან შეიძლება ჰქონდეს თვალი უკან კიდევ ორი ​​კარი. 249 00:08:33,490 --> 00:08:35,990 >> ასე რომ, იყო ამ წრფივი შორის ურთიერთობა ზომის 250 00:08:35,990 --> 00:08:39,059 პრობლემა, ვთქვათ, x-ღერძი და დროის სჭირდება 251 00:08:39,059 --> 00:08:40,440 მოგვარება on წ. 252 00:08:40,440 --> 00:08:43,330 მაგრამ სურათს მე alluding to ადრე იყო ეს მწვანე ზოლში. 253 00:08:43,330 --> 00:08:45,970 მწვანე შეგნებულად, რადგან ეს მხოლოდ იყო. 254 00:08:45,970 --> 00:08:49,790 თეორიულად, ალგორითმი, როდესაც ჩვენ ეს გავაკეთეთ ერთად სატელეფონო წიგნი, როცა ჩვენ ეს გავაკეთეთ 255 00:08:49,790 --> 00:08:52,420 თქვენთან ერთად ბიჭებს დამთვლელი ერთმანეთს და მეორე შემთხვევაში, როდესაც Jennifer მხოლოდ 256 00:08:52,420 --> 00:08:55,250 ეს გააკეთა აქ, ეს იყო ერთგვარი საქართველოს ფუნდამენტურად უკეთესი. 257 00:08:55,250 --> 00:08:57,180 იმის გამო, რომ ეს არ იყო მხოლოდ ორჯერ სწრაფად. 258 00:08:57,180 --> 00:08:58,870 ეს არ იყო კი ოთხჯერ უფრო სწრაფად. 259 00:08:58,870 --> 00:09:03,290 ეს იყო მთლიანად დამოკიდებული, თუ რა ზომის მითითება, თუ რამდენი 260 00:09:03,290 --> 00:09:05,220 ნაბიჯი, საბოლოოდ მიიღო. 261 00:09:05,220 --> 00:09:08,040 >> ასე რომ, ეს მარტივი იდეა, რომ ჩვენ ყველა აიღო თავისთავად ერთად სატელეფონო წიგნი, 262 00:09:08,040 --> 00:09:10,200 შეიძლება ერთნაირად უნდა იქნას გამოყენებული რაღაც მოსწონს ეს. 263 00:09:10,200 --> 00:09:12,380 და ეს შეიძლება უფრო casually ცნობილია, როგორც თქვენ ალბათ 264 00:09:12,380 --> 00:09:13,940 წარმოიდგინეთ, გათიშე და დაპყრობას. 265 00:09:13,940 --> 00:09:16,390 არ განსხვავებით, რაც ჩვენ გავაკეთეთ, რა თქმა უნდა, ერთად სატელეფონო წიგნი. 266 00:09:16,390 --> 00:09:18,300 >> მაგრამ pseudocode, გაწვევას, სწორედ ეს იყო. 267 00:09:18,300 --> 00:09:21,800 ასე რომ, ჩვენ ამას არ გააკეთებს ეს კიდევ ერთხელ, მაგრამ გავიხსენოთ რომ პირველ კვირას, ჩვენ ყველანი აღუდგა 268 00:09:21,800 --> 00:09:25,140 შემდეგ კი ნახევარი თქვენ დაჯდა, ნახევარი თქვენ დაჯდა, ნახევარი თქვენ დაჯდა. 269 00:09:25,140 --> 00:09:29,280 ეს ალგორითმი განხორციელდა ცოტა მოტყუების გზით, რომ, ის 270 00:09:29,280 --> 00:09:32,870 არ იყო მხოლოდ ერთი me დამთვლელი, ფუნდამენტურად, უფრო ეფექტურად. 271 00:09:32,870 --> 00:09:35,830 ამ შემთხვევაში, მე ოპერაციული ზოგადსაგანმანათლებლო რესურსი. 272 00:09:35,830 --> 00:09:39,470 სახის, მრავალჯერადი პროცესორები, მრავალჯერადი ტვინი, მრავალი ჭკვიანი ადამიანები არიან 273 00:09:39,470 --> 00:09:42,740 ოთახი ეხმარება მე მიიღონ რაღაც წრფივი რაიმე 274 00:09:42,740 --> 00:09:45,190 ლოგარითმული, საწყისი რამე წითელი რაღაც მწვანე. 275 00:09:45,190 --> 00:09:48,650 >> მაგრამ ამ შემთხვევაში, ჯენიფერ მარტო შეუძლია ძირეულად გავაუმჯობესოთ საფუძველზე 276 00:09:48,650 --> 00:09:52,370 შესრულების მისი პირველი ალგორითმის მიერ, ერთხელ, მხოლოდ ფიქრი ცოტა რთული. 277 00:09:52,370 --> 00:09:56,650 ახლა, როდესაც საქმე დროის განხორციელება ეს ყველაფერი, მჭიდროდაა გარეთ 278 00:09:56,650 --> 00:10:00,670 რა ხაზი კოდი შეგიძლიათ დაწერა ასეთი რომ თქვენ შეგიძლიათ ვიმეორებ კიდევ ერთხელ, და 279 00:10:00,670 --> 00:10:03,350 ისევ და ისევ, და ისევ, ერთგვარი ამ looping მოდის. 280 00:10:03,350 --> 00:10:06,370 იმის გამო, რომ თქვენ არ აპირებს ფუფუნება, როგორიც Jennifer გააკეთა, პირველ რიგში, უნდა 281 00:10:06,370 --> 00:10:10,460 უბრალოდ მთელი bunch of სტაბილურობის ინსტრუმენტის და აცხადებენ, hmm, თუ ეს პირველი ნომერი 4, 282 00:10:10,460 --> 00:10:11,800 ნება მომეცით გადასვლა ყველა გზა ბოლომდე. 283 00:10:11,800 --> 00:10:14,180 Ooh, თუ ეს რიცხვი ძალიან დიდია, ნება მომეცით გადაადგილება თვითნებურად უკან 284 00:10:14,180 --> 00:10:15,220 მეორე ელემენტს. 285 00:10:15,220 --> 00:10:18,210 თქვენ იპოვით რომ ეს იქნება ძალიან ბევრი რთული formalize რაც ჩვენ ადამიანები 286 00:10:18,210 --> 00:10:21,270 თავისთავად, როგორც ძალიან გონივრული heuristics, მაგრამ კომპიუტერის მხოლოდ 287 00:10:21,270 --> 00:10:23,260 აპირებს თუ რას ვამბობ, რომ ამის გაკეთება. 288 00:10:23,260 --> 00:10:25,280 >> ახლა ეს ძალიან საინტერესო შედეგები მოჰყვეს. 289 00:10:25,280 --> 00:10:29,950 ეს გრაფაში არის ერთგვარი ნიშნავდა ერთგვარი overwhelm ვიზუალურად, მაგრამ შეამჩნია, სადაც 290 00:10:29,950 --> 00:10:32,230 არის სწორი ხაზი ამ გრაფაში? 291 00:10:32,230 --> 00:10:35,330 სად არის წრფივი გრაფაში რომ ჩვენ მოვუწოდებთ N? 292 00:10:35,330 --> 00:10:37,580 ისე, ეს ერთგვარი მიმართ ბოლოში ამ სურათის, არა? 293 00:10:37,580 --> 00:10:40,500 ამიტომ, ჩვენ გავაკეთეთ არის ჩვენ ერთგვარი zoomed გატარება x-ღერძი და 294 00:10:40,500 --> 00:10:44,780 Y-ღერძი ცდილობენ მისაღებად გრძნობა რა სხვა სახის მოსახვევებში ჰგავს. 295 00:10:44,780 --> 00:10:47,760 >> და სპეციფიკა მათემატიკის გამონათქვამების დღეს არ აქვს მნიშვნელობა, ისე 296 00:10:47,760 --> 00:10:52,440 ბევრი, მაგრამ შეამჩნია, რომ არსებობს ბევრი ალგორითმები, რომ გაცილებით უარესი 297 00:10:52,440 --> 00:10:53,470 რაღაც რომ არის წრფივი. 298 00:10:53,470 --> 00:10:55,410 მართლაც, ო cubed გამოიყურება საკმაოდ ცუდი. 299 00:10:55,410 --> 00:10:58,400 2 ო გამოიყურება საკმაოდ ცუდი. n კვადრატში გამოიყურება საკმაოდ ცუდი. 300 00:10:58,400 --> 00:11:01,630 და ჩვენ ვხედავთ, თუ რა ზოგიერთი ასეთი შესაძლოა, რეალურად დღეს. 301 00:11:01,630 --> 00:11:05,430 და შესვლა n ვერ გრძნობს, როგორც ცუდი, მაგრამ უკეთესია, ვიდრე N არის ჟურნალის ბაზაზე 2 ო. 302 00:11:05,430 --> 00:11:08,080 მაგრამ იცით, ეს იქნებოდა კი უფრო გასაოცარი, თუ Jennifer, ან თუ ჩვენ, 303 00:11:08,080 --> 00:11:12,910 რომ პირველ კვირას, რომ ამუშავება რაღაც რომ არის ჟურნალი ჟურნალის შესახებ n. 304 00:11:12,910 --> 00:11:15,880 >> ასე რომ, სხვა სიტყვებით, არ არსებობს ეს მთელი მრავალი შესაძლებელი გადაწყვეტილებების 305 00:11:15,880 --> 00:11:18,570 პრობლემები, მაგრამ აქაც, განცხადებების რა მოხდება. 306 00:11:18,570 --> 00:11:22,910 როცა დააშორებს, რომელიც ამ მოსახვევებში აპირებს დაამტკიცოს აბსოლუტური 307 00:11:22,910 --> 00:11:26,630 ყველაზე უარესი, ვინც ეკრანზე ახლა? 308 00:11:26,630 --> 00:11:28,680 ასე რომ, ო cubed გამოიყურება საკმაოდ ცუდი მომენტში. 309 00:11:28,680 --> 00:11:32,470 მაგრამ თუ ჩვენ დააშორებს და ვნახოთ მეტი x და y-ღერძი, ვინც აპირებს 310 00:11:32,470 --> 00:11:34,550 დომინირება საბოლოოდ? 311 00:11:34,550 --> 00:11:37,120 ასე რომ, ეს, ფაქტობრივად, გამოდის, რომ 2 ო, და შეგიძლიათ გაერკვნენ ამ out მხოლოდ 312 00:11:37,120 --> 00:11:39,990 ჩართვის ზოგიერთი სულ უფრო და უფრო დიდი ნომრები, და დაინახავთ, რომ 2 313 00:11:39,990 --> 00:11:42,070 ო, რა თქმა უნდა, იღებს უფრო დიდი უფრო სწრაფად. 314 00:11:42,070 --> 00:11:45,530 თუ ჩვენ მართლაც დააშორებს, 2 ო ალგორითმი სრულიად sucks. 315 00:11:45,530 --> 00:11:48,170 ვგულისხმობ ამ აპირებს საკმაოდ ცოტა დრო 316 00:11:48,170 --> 00:11:49,460 კომპიუტერი churn მეშვეობით. 317 00:11:49,460 --> 00:11:52,500 >> მაგრამ დაინახავთ დროთა განმავლობაში, განსაკუთრებით მომავალ პრობლემა კომპლექტი და კიდევ 318 00:11:52,500 --> 00:11:55,600 საბოლოო პროექტები, არის თქვენი მონაცემები კომპლექტი იღებს დიდი, ყველა უფლება? 319 00:11:55,600 --> 00:11:58,300 მაშინაც კი, პირველი ვარიანტი Facebook, როგორც რაოდენობის მეგობრები და 320 00:11:58,300 --> 00:12:01,840 რეგისტრირებულ წევრებს მივიღე დიდი, შეგიძლიათ დასალაგებლად სატელეფონო იგი და 321 00:12:01,840 --> 00:12:05,530 განახორციელოს რაიმე ერთად წრფივი ძებნა, ან ძალიან მარტივია დახარისხება 322 00:12:05,530 --> 00:12:07,030 ალგორითმი, როგორც ჩვენ დავინახავთ დღეს. 323 00:12:07,030 --> 00:12:09,280 თქვენ უნდა დაიწყოს ფიქრი უფრო რთული და უფრო შესახებ ეს პრობლემა. 324 00:12:09,280 --> 00:12:12,070 ხოლო სახის პრობლემები ადგილებში, როგორიცაა Facebook და Google და Microsoft, 325 00:12:12,070 --> 00:12:16,350 და სხვები მუშაობენ, ზუსტად ეს ერთგვარი დიდი მონაცემთა სახის კითხვებით 326 00:12:16,350 --> 00:12:18,530 სულ უფრო და უფრო ამ დღეებში. 327 00:12:18,530 --> 00:12:18,900 >> ყველა უფლება. 328 00:12:18,900 --> 00:12:23,800 ასე რომ, Jennifer წარმატებას, რომ მეორე ალგორითმი, გულწრფელად ვამბობ, მან გააკეთა საოცრად 329 00:12:23,800 --> 00:12:26,110 ასევე პირველად, მაგრამ დაწერა როგორც გისურვებთ, რათა ჩვენ 330 00:12:26,110 --> 00:12:27,000 შეუძლია ამ ეტაპზე. 331 00:12:27,000 --> 00:12:30,970 მეორე შემთხვევაში, იგი leveraged ალგორითმი რომ განმეორდება და 332 00:12:30,970 --> 00:12:34,670 ერთხელ, მაგრამ მან მიანიჭა გარკვეული ვარაუდი, რომ ჩვენ საშუალება მისცა 333 00:12:34,670 --> 00:12:39,370 იგი, მაგრამ იგი ექსპლუატაციაში რამდენიმე დეტალურად მეორედ, რომ მას არ აქვს 334 00:12:39,370 --> 00:12:39,840 პირველად. 335 00:12:39,840 --> 00:12:41,800 რომელიც რა? 336 00:12:41,800 --> 00:12:43,050 >> ეს სია დახარისხებული. 337 00:12:43,050 --> 00:12:46,350 ასე რომ, როგორც კი სია დალაგებულია, ჩვენ აცხადებენ, რომ ჯენიფერი შეძლო ამის გაკეთება 338 00:12:46,350 --> 00:12:47,480 ფუნდამენტურად უკეთესი. 339 00:12:47,480 --> 00:12:51,450 7 კარი, დიახ, არ არის, რომ საინტერესო, მაგრამ ვარაუდობენ, ეს ჩვენ 7 მილიონი კარი. 340 00:12:51,450 --> 00:12:54,080 შესვლა of n ნამდვილად აპირებს შეასრულოს ბევრი, ბევრი 341 00:12:54,080 --> 00:12:55,610 სწრაფად გრძელვადიან პერსპექტივაში. 342 00:12:55,610 --> 00:12:58,880 მაგრამ მას უნდა ჰქონდეს კარი გადანაწილებული მისთვის. 343 00:12:58,880 --> 00:13:02,320 ახლა, მე თავისუფლების აკეთებს, რომ წინასწარ on კომპიუტერის ეკრანზე 344 00:13:02,320 --> 00:13:05,160 აქ, მაგრამ ვარაუდობენ, რომ ჯენიფერი ეს უნდა გააკეთოს, რომ თავად? 345 00:13:05,160 --> 00:13:10,120 ვარაუდობენ, რომ კარი კითხვა წარმოდგენილია მონაცემების მონაცემთა ბაზაში, ან 346 00:13:10,120 --> 00:13:14,260 მეგობრების დარეგისტრირებულ Facebook-ზე, ან ნებისმიერი ვებ გვერდები ინტერნეტში, რომ 347 00:13:14,260 --> 00:13:16,880 სხვადასხვა საიტებზე ალბათ საჭიროა გვერდზე ან ძებნის დასრულდა. 348 00:13:16,880 --> 00:13:20,940 >> დავუშვათ, რომ უბრალოდ ჰქონდა ნედლეული მონაცემები მითითებული და ის დარჩა, რომ თქვენ, ან 349 00:13:20,940 --> 00:13:23,010 Jennifer უნდა გავაკეთოთ, რომ დახარისხება? 350 00:13:23,010 --> 00:13:26,950 ეს, არამედ, მოითხოვს, რომ ჩვენ პასუხის გაცემა კითხვაზე, ასევე, რამდენი დრო 351 00:13:26,950 --> 00:13:31,080 იქნებოდა მიღებული Jennifer, ან თუნდაც ჩემთვის, დასალაგებლად ეს ციფრები წინასწარ ისე 352 00:13:31,080 --> 00:13:32,680 რომ მას შეეძლო ისარგებლოს, რომ? 353 00:13:32,680 --> 00:13:32,880 არა? 354 00:13:32,880 --> 00:13:36,620 იმის გამო, რომ გავლენა, რა თქმა უნდა, თუ ის ჩემთვის სრულიად ხოლო დასალაგებლად 355 00:13:36,620 --> 00:13:40,800 ციფრები, რომელიც heck ზრუნავს, რომ თქვენ შეგიძლიათ ნომრის მსგავსად 50 ისე სწრაფად, 356 00:13:40,800 --> 00:13:44,850 როგორც Jennifer საქმე, თუ ჩვენ უფრო მეტია, ვიდრე overwhelmed თანხა სულ დრო 357 00:13:44,850 --> 00:13:46,920 დასჭირდა by დახარისხება რამ წინასწარ? 358 00:13:46,920 --> 00:13:49,320 >> ასე რომ ვნახოთ, შევძლებთ თუ არა ხატავს სურათს აქ. 359 00:13:49,320 --> 00:13:51,370 მე მაქვს მთელი bunch მეტი სტრესი ბურთები, თუ, რომელიც ეხმარება 360 00:13:51,370 --> 00:13:52,270 დაძვრა აქ. 361 00:13:52,270 --> 00:13:55,690 და თუ თქვენ არ გათვალისწინებით, ჩვენ გვჭირდება შვიდი მოხალისე - 362 00:13:55,690 --> 00:13:57,060 მე, OK. 363 00:13:57,060 --> 00:13:57,240 Wow. 364 00:13:57,240 --> 00:13:59,250 ასე რომ, ჩვენ არ უნდა გაატარონ წლის სამაგიდო ნათურები, როგორც ჩანს. 365 00:13:59,250 --> 00:13:59,690 ყველა უფლება. 366 00:13:59,690 --> 00:14:01,530 ასე რომ, როგორ თქვენს შესახებ ორი წინ. 367 00:14:01,530 --> 00:14:04,160 როგორ შესახებ თქვენ ორი ბიჭები უკან. 368 00:14:04,160 --> 00:14:04,870 ასე რომ ოთხი. 369 00:14:04,870 --> 00:14:09,890 როგორ შესახებ თქვენ წინაშე ხუთი, ექვსი და შვიდი. 370 00:14:09,890 --> 00:14:10,320 უფლება არსებობს. 371 00:14:10,320 --> 00:14:13,260 თქვენი მეგობრის მიუთითებს თქვენ out, ასე რომ თქვენ პრიზი. 372 00:14:13,260 --> 00:14:13,700 >> ყველა უფლება. 373 00:14:13,700 --> 00:14:14,410 კარგით up. 374 00:14:14,410 --> 00:14:17,120 რატომ არ გვაქვს თქვენ ბიჭები მოდის მეტი აქ. 375 00:14:17,120 --> 00:14:18,960 მე ვაპირებ გაძლევთ თითოეული ნომერი. 376 00:14:18,960 --> 00:14:22,150 და წავიდეთ წინ და მოწყობა საკუთარი თავი იდენტურად, თუ რა არის 377 00:14:22,150 --> 00:14:25,180 გამოსახულია ეკრანზე. 378 00:14:25,180 --> 00:14:26,530 >> [INTERPOSING ხმები] 379 00:14:26,530 --> 00:14:28,160 >> დევიდ ჯ Malan: OOP, ბოდიში. 380 00:14:28,160 --> 00:14:30,210 Bug. 381 00:14:30,210 --> 00:14:32,180 ყველა უფლება. 382 00:14:32,180 --> 00:14:32,750 ასევე, აქ მივდივართ. 383 00:14:32,750 --> 00:14:34,180 პუნქტების ხუთ. 384 00:14:34,180 --> 00:14:35,136 პუნქტების ექვსი. 385 00:14:35,136 --> 00:14:37,770 ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი, შვიდი. 386 00:14:37,770 --> 00:14:39,410 ოჰ, ეს უხერხულია. 387 00:14:39,410 --> 00:14:41,210 >> დინამიკები 2: მე უბრალოდ -. 388 00:14:41,210 --> 00:14:41,900 >> დევიდ ჯ Malan: კარგი გარიგება. 389 00:14:41,900 --> 00:14:43,130 ყველა უფლება. 390 00:14:43,130 --> 00:14:44,611 დიდი მადლობა მონაწილეობისათვის. 391 00:14:44,611 --> 00:14:47,200 >> [ტაში] 392 00:14:47,200 --> 00:14:48,580 >> OK. 393 00:14:48,580 --> 00:14:48,860 ყველა უფლება. 394 00:14:48,860 --> 00:14:51,970 ასე რომ, ჩვენ გვაქვს ოთხი, ორი, ექვსი, ერთი, სამი, შვიდი, ხუთი. 395 00:14:51,970 --> 00:14:56,010 Perfect ამიტომ ჩვენ შვიდი მოხალისეები აქ ვინც თანასწორი არიან სიგანე to 396 00:14:56,010 --> 00:14:57,430 მასივი, რომ ჩვენ სათამაშო ადრე. 397 00:14:57,430 --> 00:14:59,470 და მე აირჩია შვიდი მიზეზი რომ იქნება 398 00:14:59,470 --> 00:15:00,840 მოსახერხებელი ცოტა. 399 00:15:00,840 --> 00:15:04,400 და მე ვაპირებ შესთავაზოს პირველია, რომელიც ჩვენ დასალაგებლად ამ შვიდი მოხალისეები. 400 00:15:04,400 --> 00:15:06,786 თუ გსურთ, პირველ რიგში, to მიესალმები თუმცა. 401 00:15:06,786 --> 00:15:08,970 ვინაიდან ეს იქნება უხერხულ რამდენიმე წუთის განმავლობაში. 402 00:15:08,970 --> 00:15:10,370 გააცნოს საკუთარი თავი. 403 00:15:10,370 --> 00:15:10,980 >> GRACE: Hi, მე Grace. 404 00:15:10,980 --> 00:15:14,190 მე ვარ მეორე კურსის შემდეგ Leverett სახლი. 405 00:15:14,190 --> 00:15:14,620 >> BRANSON: Hi. 406 00:15:14,620 --> 00:15:15,620 მე Branson. 407 00:15:15,620 --> 00:15:16,920 მე freshman in WELD. 408 00:15:16,920 --> 00:15:19,755 409 00:15:19,755 --> 00:15:20,230 >> Gabe: Hi. 410 00:15:20,230 --> 00:15:21,040 მე Gabe. 411 00:15:21,040 --> 00:15:22,300 მე უმცროსი in Cabot. 412 00:15:22,300 --> 00:15:24,826 413 00:15:24,826 --> 00:15:25,980 >> ნილ: მე ნილ. 414 00:15:25,980 --> 00:15:29,090 მე freshman in Matthews. 415 00:15:29,090 --> 00:15:29,550 >> JASON: მე ჯეისონ. 416 00:15:29,550 --> 00:15:32,816 მე freshman in Greenough. 417 00:15:32,816 --> 00:15:33,700 >> მაიკ: მე მაიკ. 418 00:15:33,700 --> 00:15:37,360 მე freshman in Grays. 419 00:15:37,360 --> 00:15:37,990 >> Jess: მე Jess. 420 00:15:37,990 --> 00:15:40,313 მე ვარ მეორე კურსის შემდეგ Leverett. 421 00:15:40,313 --> 00:15:41,300 >> დევიდ ჯ Malan: Excellent. 422 00:15:41,300 --> 00:15:41,850 ყველა უფლება. 423 00:15:41,850 --> 00:15:44,190 ისე, მადლობა ყველას, ჩვენი მოხალისეები აქ ჯერჯერობით. 424 00:15:44,190 --> 00:15:47,110 და გამოწვევა ხელთ მიმდინარეობს უნდა იყოს დასალაგებლად ამ ბიჭებს, მაგრამ მერე 425 00:15:47,110 --> 00:15:50,250 ჩვენ ვაპირებთ, უნდა ვიფიქროთ ცოტა მძიმე, თუ როგორ ეფექტურად ჩვენ რეალურად 426 00:15:50,250 --> 00:15:51,110 გადანაწილებული მათ. 427 00:15:51,110 --> 00:15:52,580 მოდით პირველი ცდილობენ ამ. 428 00:15:52,580 --> 00:15:55,970 თქვენ ბიჭები ვხედავთ ერთმანეთის ნომრები უბრალოდ მიერ განთავსების გარშემო კუთხეში. 429 00:15:55,970 --> 00:15:59,380 მე წინ და რამდენიმე წამი, ხოლო დალაგების საკუთარი თავი ეხლა პატარა on 430 00:15:59,380 --> 00:16:01,240 დარჩა უდიდეს მარჯვენა. 431 00:16:01,240 --> 00:16:02,490 წასვლა. 432 00:16:02,490 --> 00:16:07,010 433 00:16:07,010 --> 00:16:07,530 >> OK. 434 00:16:07,530 --> 00:16:08,030 კარგი. 435 00:16:08,030 --> 00:16:09,370 ეს იყო ნამდვილად darn სწრაფად. 436 00:16:09,370 --> 00:16:14,040 ახლა ვინმე აქ, რა იყო ალგორითმი რომ ამ ბიჭებს გამოყენებული? 437 00:16:14,040 --> 00:16:14,900 >> დინამიკები 1: ნაკლებიდან უდიდესი. 438 00:16:14,900 --> 00:16:15,000 >> დევიდ ჯ Malan: OK. 439 00:16:15,000 --> 00:16:18,070 მაინც დიდი მართლაც ერთგვარი ობიექტური, მაგრამ მე არ ვარ დარწმუნებული, რომ ის 440 00:16:18,070 --> 00:16:18,890 მართლაც ალგორითმი. 441 00:16:18,890 --> 00:16:21,810 მაინც დიდი არ გითხრათ მე ნაბიჯ ნაბიჯ რა უნდა გააკეთოს. 442 00:16:21,810 --> 00:16:22,833 ჰო? 443 00:16:22,833 --> 00:16:24,083 >> დინამიკები 1: [inaudible] 444 00:16:24,083 --> 00:16:26,010 445 00:16:26,010 --> 00:16:26,280 >> დევიდ ჯ Malan: OK. 446 00:16:26,280 --> 00:16:28,920 ასე რომ, თუ ხედავთ პირი ნაკლები თქვენი ნომერი, მაშინ გადავა 447 00:16:28,920 --> 00:16:29,680 უფლებას აძლევს. 448 00:16:29,680 --> 00:16:32,800 ასე რომ, ახლა უფრო გამომხატველი, უფრო ალგორითმი, იმიტომ, რომ თქვენ 449 00:16:32,800 --> 00:16:35,410 შეიძლება ითქვას, თუ ეს, მაშინ ეს. 450 00:16:35,410 --> 00:16:37,050 ასე რომ, ჩვენ გვაქვს გარკვეული სახის პირობითი მშენებლობა. 451 00:16:37,050 --> 00:16:39,700 ხოლო ეს ბიჭები, როგორც ჩანს, ამის გაკეთება რამდენიმე ჯერ, რადგან თქვენ გადავიდა ცოტა 452 00:16:39,700 --> 00:16:40,420 საქართველოს მანძილზე. 453 00:16:40,420 --> 00:16:43,410 ასე რომ, სავარაუდოდ რაიმე სახის looping ხდება მათი გონება. 454 00:16:43,410 --> 00:16:44,610 >> მაგრამ მოდით ცდილობენ formalize რომ. 455 00:16:44,610 --> 00:16:47,540 თუ თქვენ ბიჭები შეიძლება აღადგინოთ უკან to ამ შეთანხმებას. 456 00:16:47,540 --> 00:16:50,650 ვნახოთ, შევძლებთ თუ არა formalize ამ ცოტა და შემდეგ ვთხოვთ კითხვას, უბრალოდ 457 00:16:50,650 --> 00:16:51,580 რამდენად ეფექტურია ეს? 458 00:16:51,580 --> 00:16:54,220 რა თქმა უნდა, როდესაც ამას ვაკეთებთ უფრო ნელა, ეს სურვილი რამდენად გრძნობს, როგორც კარგი 459 00:16:54,220 --> 00:16:57,210 ალგორითმი, მაგრამ ვნახოთ, შევძლებთ თუ რომ ჩვენი თითების on ზუსტი ნაბიჯები. 460 00:16:57,210 --> 00:16:58,670 >> ასე რომ ორი ბიჭები არიან ოთხი და ორი. 461 00:16:58,670 --> 00:17:01,020 ან შეგიძლიათ სწორი ან არასწორი ბრძანება? 462 00:17:01,020 --> 00:17:01,900 ცხადია არასწორია. 463 00:17:01,900 --> 00:17:02,710 ასე რომ, ჩვენ swapped. 464 00:17:02,710 --> 00:17:05,170 ახლა მე ვაპირებ გადაადგილება განზე აქ და აცხადებენ, ოთხიდან ექვს. 465 00:17:05,170 --> 00:17:06,240 ხართ თუ არა სწორი ან არასწორი? 466 00:17:06,240 --> 00:17:06,599 >> Gabe: სწორი. 467 00:17:06,599 --> 00:17:07,180 >> დევიდ ჯ Malan: სწორი. 468 00:17:07,180 --> 00:17:08,300 ექვსი და ერთი? 469 00:17:08,300 --> 00:17:08,609 Nope. 470 00:17:08,609 --> 00:17:09,630 გაცვლა. 471 00:17:09,630 --> 00:17:10,490 ასე რომ, ორი გაცვლებს. 472 00:17:10,490 --> 00:17:11,710 ექვსი და სამი? 473 00:17:11,710 --> 00:17:11,980 Nope. 474 00:17:11,980 --> 00:17:13,000 გაცვლა. 475 00:17:13,000 --> 00:17:13,930 ექვსი და შვიდი? 476 00:17:13,930 --> 00:17:14,630 კარგად გამოიყურება. 477 00:17:14,630 --> 00:17:15,396 შვიდი და ხუთი? 478 00:17:15,396 --> 00:17:16,150 >> Jess: [inaudible] 479 00:17:16,150 --> 00:17:17,089 >> დევიდ ჯ Malan: კარგი, მოკლე. 480 00:17:17,089 --> 00:17:19,770 და გადანაწილებული. 481 00:17:19,770 --> 00:17:19,980 ყველა უფლება. 482 00:17:19,980 --> 00:17:21,440 ასე აშკარად არ, არა? 483 00:17:21,440 --> 00:17:22,470 ასე რომ, უფრო გრძელდება. 484 00:17:22,470 --> 00:17:24,920 მაგრამ, რა თქმა უნდა, ამ ბიჭებს, მაშინაც კი, მხოლოდ ინსტინქტურად. 485 00:17:24,920 --> 00:17:25,450 ინახება მოძრაობს. 486 00:17:25,450 --> 00:17:27,710 ისინი არა მხოლოდ შეჩერება, როდესაც მათ შესწორებული ერთი პრობლემა. 487 00:17:27,710 --> 00:17:27,839 ასე რომ. 488 00:17:27,839 --> 00:17:29,390 მართლაც, მე ვაპირებ აქვს იგივეს შვება. 489 00:17:29,390 --> 00:17:32,720 მე ვაპირებ უნდა ერთგვარი გადახვევა უკან დასაწყისში ეს პრობლემა, 490 00:17:32,720 --> 00:17:35,630 ან დასაწყისში მასივი ადამიანი დავიწყოთ მოუწოდებს მათ. 491 00:17:35,630 --> 00:17:38,366 >> ახლა კი რა უნდა ჩემს ალგორითმი მეორე უღელტეხილზე იყოს? 492 00:17:38,366 --> 00:17:39,220 >> დინამიკები 1: იგივე. 493 00:17:39,220 --> 00:17:39,940 >> დევიდ ჯ Malan: იგივე. 494 00:17:39,940 --> 00:17:41,460 ეს კი, მე დაწყებული მინდა, არა? 495 00:17:41,460 --> 00:17:44,720 როგორც კი ნახავთ თავს აკეთებს იგივე ისევ და ისევ, ეს არის ის, 496 00:17:44,720 --> 00:17:47,890 უფრო მოსწონს ალგორითმი, და ნაკლები ადამიანური ინსტიქტი. 497 00:17:47,890 --> 00:17:48,680 >> ასე რომ, ახლა, აქ მივდივართ ისევ. 498 00:17:48,680 --> 00:17:49,870 ორი და ოთხი? 499 00:17:49,870 --> 00:17:50,220 პოსტები 500 00:17:50,220 --> 00:17:51,050 ოთხი და ერთი? 501 00:17:51,050 --> 00:17:53,380 Ah, იყო მართლაც რაღაც მუშაობა ჯერ კიდევ გასაკეთებელი. 502 00:17:53,380 --> 00:17:53,620 და სამი? 503 00:17:53,620 --> 00:17:54,572 კარგი. 504 00:17:54,572 --> 00:17:56,000 ოთხი და ექვსი? 505 00:17:56,000 --> 00:17:58,380 ექვსი და ხუთი? 506 00:17:58,380 --> 00:17:59,470 ექვსი და შვიდი? 507 00:17:59,470 --> 00:18:00,970 კარგი, ახლა, გაკეთდეს. 508 00:18:00,970 --> 00:18:01,550 OK, არ. 509 00:18:01,550 --> 00:18:02,710 მე უნდა დაბრუნდეს. 510 00:18:02,710 --> 00:18:05,130 >> ასე რომ, ახლა, კიდევ ერთხელ, ვაკეთებთ ამ უფრო განზრახ. 511 00:18:05,130 --> 00:18:08,700 ახლა კი, აქ არის მხოლოდ ერთი ტვინის შესრულებაში ეს ალგორითმი. 512 00:18:08,700 --> 00:18:10,290 ერთი CPU, თუ გნებავთ. 513 00:18:10,290 --> 00:18:13,090 და გულწრფელად, რომ ერთადერთი წყარო ჩვენ ვაპირებთ ჰქონდეს. 514 00:18:13,090 --> 00:18:16,280 და კიდევ ჩვენ დაბრუნდეს keyboard და აქვს რაღაც C ჩვენს 515 00:18:16,280 --> 00:18:19,600 განკარგულებაში, ჩვენ მხოლოდ პროგრამის წერა რომ შეუძლია ერთი რამ დროს. 516 00:18:19,600 --> 00:18:22,900 ამასთან, ამ ბიჭებს მომენტში წინ, ჩვენ leveraged მათი ერთობლივი brainpower 517 00:18:22,900 --> 00:18:24,180 ისევე, როგორც ეს ბიჭები გააკეთა კვირაში ნულოვანი. 518 00:18:24,180 --> 00:18:24,980 მოდით შენარჩუნება აკეთებენ. 519 00:18:24,980 --> 00:18:26,260 >> ორი და ერთი. 520 00:18:26,260 --> 00:18:26,945 ორი და სამი. 521 00:18:26,945 --> 00:18:27,460 სამი და ოთხი. 522 00:18:27,460 --> 00:18:28,310 ოთხი და ხუთ. 523 00:18:28,310 --> 00:18:28,620 ხუთი და ექვსი. 524 00:18:28,620 --> 00:18:30,510 ექვსი და შვიდი. 525 00:18:30,510 --> 00:18:31,880 შესრულებულია? 526 00:18:31,880 --> 00:18:34,560 ასე რომ, მე ვარ, მაგრამ ნება მომეცით ითამაშებს ეშმაკის ადვოკატი. 527 00:18:34,560 --> 00:18:37,950 მაქვს, ერთგვარი კომპიუტერი, რომელიც მხოლოდ გააკეთა სწორედ ამ მიმართულებით მასივი 528 00:18:37,950 --> 00:18:40,225 ადამიანი, ვიცი, რომ მე გაკეთდეს? 529 00:18:40,225 --> 00:18:40,670 >> დინამიკები 1: არა 530 00:18:40,670 --> 00:18:41,050 >> დევიდ ჯ Malan: რატომ? 531 00:18:41,050 --> 00:18:46,900 რას უნდა გავაკეთოთ, რათა დავასკვნათ, საბოლოოდ, რომ მე გაკეთდეს? 532 00:18:46,900 --> 00:18:48,230 ალბათ კიდევ ერთი უღელტეხილი. 533 00:18:48,230 --> 00:18:48,430 არა? 534 00:18:48,430 --> 00:18:51,760 იმის გამო, რომ მე ვიცი, რომ წინა უღელტეხილზე არის, რომ მე შესწორებული შეცდომა. 535 00:18:51,760 --> 00:18:53,920 და ეს ნიშნავს, იქნებ არსებობს კიდევ ერთი შეცდომა 536 00:18:53,920 --> 00:18:54,840 რომ მე უნდა გამოსწორდეს. 537 00:18:54,840 --> 00:18:58,680 ასე, რომ შეიძლება იყოს მხოლოდ დარწმუნებული მიერ rewinding და შემდეგ შემოწმების, ერთი ორი, ორი და 538 00:18:58,680 --> 00:19:00,940 სამი, სამი და ოთხი, ოთხი და ხუთი, ხუთი და ექვსი, ექვსი და შვიდი. 539 00:19:00,940 --> 00:19:02,510 OK, ახლა მე არ მუშაობა. 540 00:19:02,510 --> 00:19:05,990 >> მე, რა თქმა უნდა გვახსოვდეს, რომ მე არ მუშაობა რაღაც ცვლადი, 541 00:19:05,990 --> 00:19:06,975 მინდა int. 542 00:19:06,975 --> 00:19:12,490 მას გაცვლებს და თუ სვოპების არის 0 ერთხელ მიიღონ აქ, და ეს დაიწყო 0, მაშინ 543 00:19:12,490 --> 00:19:15,520 მე მხოლოდ სულელური შენარჩუნებას აპირებს წინ და უკან, შემოწმების ერთხელ და 544 00:19:15,520 --> 00:19:16,450 ისევ და ისევ, და ისევ, არა? 545 00:19:16,450 --> 00:19:18,450 იმის გამო, რომ თქვენ გაქვთ დავრჩებოდით ზოგიერთი სახის უსასრულო ციკლი. 546 00:19:18,450 --> 00:19:21,250 ასე რომ, როგორც კი იქ 0 გაცვლებს, ცალსახად შეიძლება ითქვას, რომ ეს 547 00:19:21,250 --> 00:19:23,810 ალგორითმის მართლაც სრული. 548 00:19:23,810 --> 00:19:25,400 >> ახლა მოდით დააყენა სახელი ამ. 549 00:19:25,400 --> 00:19:28,930 ალგორითმი, რომელიც მე ვთავაზობ ჩვენ უბრალოდ განხორციელებული არის რაღაც მოუწოდა bubble 550 00:19:28,930 --> 00:19:32,800 დალაგების, ცნობილია, როგორც ასეთი იმ თვალსაზრისით, რომ ციფრები, რომლებიც უფრო დიდ სახის 551 00:19:32,800 --> 00:19:37,990 bubble მათი გზა მდე საუკეთესო, ან ბოლომდე მასივი ნომრები. 552 00:19:37,990 --> 00:19:40,270 მაგრამ რამდენად ეფექტურია იყო ეს ალგორითმი? 553 00:19:40,270 --> 00:19:44,600 რამდენი ნაბიჯები არც მე ფიზიკურად უნდა მიიღოს, მაგალითად, დასალაგებლად ამ 554 00:19:44,600 --> 00:19:45,850 შვიდი ადამიანები? 555 00:19:45,850 --> 00:19:48,560 556 00:19:48,560 --> 00:19:49,550 >> ოთხი ხუთი? 557 00:19:49,550 --> 00:19:51,420 OK, ძალიან ბევრი საბოლოოდ იქნება პასუხი. 558 00:19:51,420 --> 00:19:54,960 მაგრამ მაშინაც, კონკრეტული რაოდენობა ასე არ არის საინტერესო. 559 00:19:54,960 --> 00:19:56,670 მოდით განზოგადება მას, როგორც ო. 560 00:19:56,670 --> 00:20:00,520 ასე რომ, თუ მე n ხალხს აქ, და ისინი იყო, ერთგვარი, შემთხვევითი წესრიგის 561 00:20:00,520 --> 00:20:02,180 დასაწყისში, რომ ორიგინალური მიზნით. 562 00:20:02,180 --> 00:20:04,910 ისე, რამდენი ნაბიჯები არც მე მაქვს მიიღოს პირველ უღელტეხილზე? 563 00:20:04,910 --> 00:20:09,810 ეს იყო ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი და ისინი შვიდი ადამიანი, ასე 564 00:20:09,810 --> 00:20:13,670 ეს არის ის, შვიდი, ექვსი - ისე, რომ ის ო მინუს ერთი ნაბიჯი პირველად. 565 00:20:13,670 --> 00:20:16,280 >> ახლა, რამდენი ნაბიჯები არც მე მაქვს მიიღოს როდესაც მე rewound? 566 00:20:16,280 --> 00:20:19,310 ასევე, ჩვენ შეიძლება რეალურად გაორმაგდება, რომ თუ ჩვენ ნამდვილად უნდოდა, მაგრამ ახლა, მე ვარ 567 00:20:19,310 --> 00:20:22,300 უბრალოდ თქმას, ყველა უფლება, კიდევ ერთი N მინუს 1. 568 00:20:22,300 --> 00:20:25,240 ასე რომ, ო მინუს 1 აპირებს მიიღოს შემაშფოთებელი შენარჩუნება სიმღერა, მოდით 569 00:20:25,240 --> 00:20:26,400 უბრალოდ გარშემო up ოდნავ. 570 00:20:26,400 --> 00:20:27,770 ასე რომ 2n ნაბიჯები. 571 00:20:27,770 --> 00:20:29,310 ასე რომ, 14 ნაბიჯები, მისცეს ან. 572 00:20:29,310 --> 00:20:31,930 >> რამდენჯერ მე ნაბიჯი მომავალი დრო? 573 00:20:31,930 --> 00:20:33,740 ისე, ეს 3N. 574 00:20:33,740 --> 00:20:34,510 ნამდვილად. 575 00:20:34,510 --> 00:20:37,920 ახლა კი, უარეს შემთხვევაში, მაგალითად, რამდენი უნდა ჰქონდეს 576 00:20:37,920 --> 00:20:41,730 წავიდა და უკან, წინ და უკან, შესრულებაში ეს ალგორითმი, შევცვალე 577 00:20:41,730 --> 00:20:44,620 ადამიანი ყოველ უღელტეხილზე, უხეშად? 578 00:20:44,620 --> 00:20:47,720 579 00:20:47,720 --> 00:20:50,010 ეს, ფაქტობრივად, n კვადრატში, არა? 580 00:20:50,010 --> 00:20:53,000 >> იმის გამო, რომ უარეს შემთხვევაში, შეგიძლიათ სახის საქართველოს ფიქრობთ ამ ინტუიციურად, 581 00:20:53,000 --> 00:20:54,800 მიუხედავად იმისა, რომ შესაძლოა პატარა ცოტა დრო ჩაძირვაში სისტემაში 582 00:20:54,800 --> 00:20:57,590 უარეს შემთხვევაში, რა ეს შვიდი ადამიანი ჩანდა, in 583 00:20:57,590 --> 00:21:00,230 თვალსაზრისით მოწყობა მათი ნომრები? 584 00:21:00,230 --> 00:21:01,460 სრულიად უკან, არა? 585 00:21:01,460 --> 00:21:02,815 და მხოლოდ სიმულაცია რომ, რა იყო თქვენი სახელი ერთხელ? 586 00:21:02,815 --> 00:21:03,360 >> მაიკ: მაიკ. 587 00:21:03,360 --> 00:21:03,640 >> დევიდ ჯ Malan: მაიკ? 588 00:21:03,640 --> 00:21:08,100 კარგი, მაიკ, შეიძლება უბრალოდ შეუერთდეს me მეტი აქ მხოლოდ ერთი მეორე? 589 00:21:08,100 --> 00:21:08,880 ფაქტობრივად, არ. 590 00:21:08,880 --> 00:21:10,150 ბოდიში მაიკ, მოდით გადახვევა. 591 00:21:10,150 --> 00:21:10,910 რა არის შენი სახელი ისევ? 592 00:21:10,910 --> 00:21:11,180 >> ნილ: ნილ. 593 00:21:11,180 --> 00:21:11,640 >> დევიდ ჯ Malan: ნილ. 594 00:21:11,640 --> 00:21:13,750 OK, ნილ, თქვენ მოდის ჩემთვის, თუ არ იბადება. 595 00:21:13,750 --> 00:21:17,150 ამიტომ, მე ვაპირებ შესთავაზოს, მხოლოდ სიმარტივის, რომ ნილ არის მისი 596 00:21:17,150 --> 00:21:18,510 ყველაზე უარესი შემთხვევაში. 597 00:21:18,510 --> 00:21:20,720 მაგრამ გავიხსენოთ, როგორ განხორციელდება ჩემი ალგორითმი. 598 00:21:20,720 --> 00:21:24,530 მე შედარებით შედარებით შედარებით, შედარებით შედარებით, რა. 599 00:21:24,530 --> 00:21:26,640 ახლა ეს ბიჭები არიან out მწყობრიდან, ამიტომ დაფიქსირება. 600 00:21:26,640 --> 00:21:27,980 ასე, რომ თქვენ ბიჭები მოკლე. 601 00:21:27,980 --> 00:21:31,630 თუმცა მიიჩნევს, ახლა, თუ რამდენად შორს ამჯამად ნილ უნდა წავიდეს? 602 00:21:31,630 --> 00:21:32,690 ეს დაახლოებით N. 603 00:21:32,690 --> 00:21:33,570 თქვენ იცით, რომ ეს არ არის რეალურად N. 604 00:21:33,570 --> 00:21:36,040 ეს იგივეა, N მინუს 1, მაგრამ მე მისაღებად გააღიზიანა შენახვა კვალს პატარა 605 00:21:36,040 --> 00:21:37,550 ნომერი, მოდით უბრალოდ ეძახით N. 606 00:21:37,550 --> 00:21:42,860 >> ასე რომ, თუ ნილ მოძრაობს ერთი ნაბიჯია მაქსიმალურად ყოველ დრო და გადაადგილება ნილ ერთი ნაბიჯია, 607 00:21:42,860 --> 00:21:46,580 უნდა მოხდეს ეს მართლაც tedious უღელტეხილზე უკან და მეოთხე, ეს არის უხეშად 608 00:21:46,580 --> 00:21:52,080 ამით, ო ნაბიჯები, სულ ო ჯერ, იმიტომ, რომ ეს აპირებს მიიღოს me 609 00:21:52,080 --> 00:21:55,820 რომ ბევრი ნაბიჯები მისაღებად ნილ ყველა გზა, სადაც მას ეკუთვნის. 610 00:21:55,820 --> 00:21:58,620 დავანებოთ ყველას, თუ ბიჭები ყველანი mis-უბრძანა ასევე. 611 00:21:58,620 --> 00:22:01,100 >> მოდით მოვუწოდებთ bubble sort n კვადრატში. 612 00:22:01,100 --> 00:22:04,860 ქრონომეტრაჟი ამ ალგორითმი, შესრულების ეს ალგორითმი, 613 00:22:04,860 --> 00:22:07,120 ეფექტიანობის ამ ალგორითმი, ჩვენ უნდა უბრალოდ აღწერს მეტი 614 00:22:07,120 --> 00:22:08,800 ზოგადად, როგორც n კვადრატში. 615 00:22:08,800 --> 00:22:11,650 რა კარგია, იმიტომ, რომ მე ვერ გააკეთებდა იგივე მაგალითი რვა ადამიანი, ცხრა 616 00:22:11,650 --> 00:22:15,450 ადამიანი, მილიონი ადამიანი, და რომ პასუხი არ შეიცვლება. 617 00:22:15,450 --> 00:22:18,870 >> ასე რომ, თუ თქვენ ბიჭები არ იბადება, მოდით გადატვირთვის თქვენ სადაც თქვენ დაიწყო. 618 00:22:18,870 --> 00:22:22,510 და მოდით ვცდილობთ ორი სხვა მიდგომები და თუ ვერ ვახერხებთ, ფუნდამენტურად 619 00:22:22,510 --> 00:22:23,820 უკეთესი, ვიდრე ეს. 620 00:22:23,820 --> 00:22:27,130 ასე რომ, ამ დროს, მე ვაპირებ შესთავაზოს დალაგების სხვადასხვა ალგორითმი. 621 00:22:27,130 --> 00:22:29,950 ეს იყო ძალიან ჭკვიანი ჩვენგანი ბოლო დროს, და თქვენ ბიჭები იყვნენ უფლება აქვს 622 00:22:29,950 --> 00:22:32,470 მარჯვენა ინსტინქტები მხოლოდ სახის საქართველოს შევცვალე pairwise. 623 00:22:32,470 --> 00:22:36,500 მაგრამ თუ ნამდვილად სურდა მივუდგეთ ამ უბრალოდ, ჩემი მიზანია, რომ გადაადგილება 624 00:22:36,500 --> 00:22:39,800 ყველა პატარა ნომრები ამ გზით, და დააყენებს ყველა დიდი ციფრები, რომ 625 00:22:39,800 --> 00:22:43,030 გზა, რატომ არ მე უბრალოდ, რომ ყველაზე გულუბრყვილო გზა შესაძლებელი და თუ მე 626 00:22:43,030 --> 00:22:45,730 შეუძლია გააკეთოს უკეთესი, ვიდრე რა იყო საკმაოდ კომპლექსური ალგორითმი? 627 00:22:45,730 --> 00:22:46,620 >> ასე რომ, ვნახოთ. 628 00:22:46,620 --> 00:22:48,940 ოთხი არის საკმაოდ მცირე რაოდენობა, ასე რომ მე დატოვებს თქვენ იქ მომენტში. 629 00:22:48,940 --> 00:22:50,610 Ooh, ნომერი ორი არის უფრო უკეთესი. 630 00:22:50,610 --> 00:22:52,230 ასე რომ, შეგიძლიათ უბრალოდ წინ გადადგმული ნაბიჯია ერთი წუთით? 631 00:22:52,230 --> 00:22:55,670 ეს არის გაკეთებული ჩემს პატარა დანომრილი კანდიდატი, და მე ვაპირებ უნდა გვახსოვდეს 632 00:22:55,670 --> 00:22:57,000 რომ, მინდა, განსხვავებულია. 633 00:22:57,000 --> 00:22:57,930 მაგრამ მე ვაპირებ შენარჩუნება შემოწმების. 634 00:22:57,930 --> 00:22:59,890 არსებობს თუ ვინმე რომლის ნომერი მცირეა? 635 00:22:59,890 --> 00:23:00,460 ექვსი, არ. 636 00:23:00,460 --> 00:23:01,390 Oh, იქ ნილ ერთხელ. 637 00:23:01,390 --> 00:23:04,050 >> ამიტომ, მე ვაპირებ დააყენებს თქვენი დაბრუნება ერთგვარი კონცეპტუალური. 638 00:23:04,050 --> 00:23:05,120 ნილ მოვა ნაბიჯია. 639 00:23:05,120 --> 00:23:08,440 ახლა კი, ცვლადი, რომ მე იყენებს შენარჩუნება სიმღერა, რომელსაც აქვს პატარა 640 00:23:08,440 --> 00:23:11,390 ნომერი განახლებული შეიცავს ნილ ადგილსამყოფელი. 641 00:23:11,390 --> 00:23:12,110 ისე, ვნახოთ. 642 00:23:12,110 --> 00:23:13,960 სამი, შვიდი, ხუთი. 643 00:23:13,960 --> 00:23:15,590 კარგი, მე ვიცი, ნილ იყო პატარა. 644 00:23:15,590 --> 00:23:18,110 რა არის მარტივი რამ ჩემთვის ქნას? 645 00:23:18,110 --> 00:23:21,410 მე არ ვაპირებ დაგვრჩა ჩემი დრო მხოლოდ bubbling ნილ ერთ ადგილზე წავიდა. 646 00:23:21,410 --> 00:23:25,350 რატომ არ მე უბრალოდ დააყენა ნილ სადაც იგი ეკუთვნის, რაც, რა თქმა, სადაც? 647 00:23:25,350 --> 00:23:26,160 >> ყველა გზა დასაწყისში. 648 00:23:26,160 --> 00:23:27,720 ასე რომ, ნილ, მოდის ჩემთან ერთად. 649 00:23:27,720 --> 00:23:28,910 და რა იყო თქვენი სახელი ერთხელ? 650 00:23:28,910 --> 00:23:29,310 >> მადლი: Grace. 651 00:23:29,310 --> 00:23:29,710 >> დევიდ ჯ Malan: Grace. 652 00:23:29,710 --> 00:23:29,920 OK. 653 00:23:29,920 --> 00:23:32,490 ასე რომ უნეტარესის, სამწუხაროდ, თქვენ სახის გზა. 654 00:23:32,490 --> 00:23:34,290 ასე რომ, როგორ უნდა მოაგვაროს ეს პრობლემა? 655 00:23:34,290 --> 00:23:34,490 არა? 656 00:23:34,490 --> 00:23:37,500 თუ ეს მასივი, იქ მხოლოდ შვიდი ადგილებში. 657 00:23:37,500 --> 00:23:40,830 შეგახსენებთ, რომ, ძარცვა, ჩვენ ვისაუბრეთ გამოცხადების ასაკის, და ჩვენ მხოლოდ 658 00:23:40,830 --> 00:23:41,740 სასრულ რაოდენობას ასაკის? 659 00:23:41,740 --> 00:23:42,535 იგივე იდეა აქ. 660 00:23:42,535 --> 00:23:44,300 ჩვენ მხოლოდ სასრული რაოდენობის ints. 661 00:23:44,300 --> 00:23:47,590 მადლი არის ერთგვარი ჩვენს სხვათა შორის, ასე როგორ უნდა დააფიქსიროს? 662 00:23:47,590 --> 00:23:49,555 >> მარტივი ჰგავს, უნეტარესის, ვწუხვარ. 663 00:23:49,555 --> 00:23:51,870 თქვენ აპირებს უნდა წავიდეს მეტი იქ ასე შეიძლება გავაკეთოთ ოთახი. 664 00:23:51,870 --> 00:23:55,290 ახლა კი, თუ ფიქრობთ ამ, შესაძლოა, ჩვენ მხოლოდ გააკეთა პრობლემა გაუარესდა. 665 00:23:55,290 --> 00:23:58,510 და, შესაძლოა, ჩვენ გავაკეთეთ, რადგან რა, Grace იყო სწორი ადგილი? 666 00:23:58,510 --> 00:24:01,730 მაგრამ ჩვენ ვიცით, რომ ის არ არის, რადგან წინააღმდეგ შემთხვევაში, იგი იქნებოდა 667 00:24:01,730 --> 00:24:03,980 იდგა ნაბიჯია ნაცვლად ნილ ამ დროს, არა? 668 00:24:03,980 --> 00:24:05,550 ჩვენ უკვე შეამოწმეს მისი ნომერი გამოვიდა. 669 00:24:05,550 --> 00:24:05,770 >> ყველა უფლება. 670 00:24:05,770 --> 00:24:09,110 ასე რომ, ახლა, ნილ არის სწორი ადგილი, და შემიძლია მცირე ოპტიმიზაცია. 671 00:24:09,110 --> 00:24:11,740 მომდევნო წუთი, მე ვაპირებ იგნორირება ნილ ყველა ერთად, ისე, რომ არ 672 00:24:11,740 --> 00:24:15,280 დაგვრჩა თავის დროზე ან შემთხვევით სვოპ მას არასწორ ადგილზე. 673 00:24:15,280 --> 00:24:17,805 ასე რომ, ახლა, როგორ უნდა მოვძებნოთ შემდეგი ელემენტი, რომელიც ყველაზე პატარა? 674 00:24:17,805 --> 00:24:18,480 ორი. 675 00:24:18,480 --> 00:24:20,225 ეს არის ის, საკმაოდ კარგი ნომერი, თუ გსურთ წინგადადგმული ნაბიჯი და 676 00:24:20,225 --> 00:24:21,100 მე მახსოვს, თქვენ. 677 00:24:21,100 --> 00:24:21,980 ექვსი, არ არის კარგი. 678 00:24:21,980 --> 00:24:24,820 ოთხი, სამი, შვიდი, ხუთი, არ არის კარგი. 679 00:24:24,820 --> 00:24:26,800 ნება მომეცით, გადაადგილება თქვენ თქვენი სწორი ადგილი. 680 00:24:26,800 --> 00:24:28,470 და ჩვენ მხოლოდ მიიღო იღბლიანი ამ დროს. 681 00:24:28,470 --> 00:24:31,350 >> ახლა, მე ვაპირებ იგნორირება ამ ორი ბიჭებს, ახლა ამის გაკეთება კიდევ ერთი 682 00:24:31,350 --> 00:24:32,260 სწორედ ამ მიმართულებით. 683 00:24:32,260 --> 00:24:33,490 ექვსი, რომ საკმაოდ მცირე რაოდენობით. 684 00:24:33,490 --> 00:24:34,300 კარგით წინ. 685 00:24:34,300 --> 00:24:35,220 ო, ბოდიში. 686 00:24:35,220 --> 00:24:37,640 Grace ნომერი უკეთესია, ასე ნაბიჯი წინ. 687 00:24:37,640 --> 00:24:38,260 ოთხი. 688 00:24:38,260 --> 00:24:39,120 ვწუხვარ, Grace. 689 00:24:39,120 --> 00:24:39,950 დაბრუნება კიდევ ერთხელ. 690 00:24:39,950 --> 00:24:41,550 პუნქტების სამი უკეთესია. 691 00:24:41,550 --> 00:24:42,290 შვიდი. 692 00:24:42,290 --> 00:24:42,720 ხუთი. 693 00:24:42,720 --> 00:24:43,550 ახლა კი რა არის თქვენი სახელი ერთხელ? 694 00:24:43,550 --> 00:24:44,000 >> JASON: ჯეისონ. 695 00:24:44,000 --> 00:24:44,420 >> დევიდ ჯ Malan: ჯეისონ. 696 00:24:44,420 --> 00:24:47,050 ასე რომ, ჯეისონ არის პატარა ელემენტს მე შერჩევა. 697 00:24:47,050 --> 00:24:49,160 სად არის იგი აპირებს წავიდეს? 698 00:24:49,160 --> 00:24:50,380 ასე რომ, სად ექვსი არის. 699 00:24:50,380 --> 00:24:51,210 და შენი სახელი ისევ? 700 00:24:51,210 --> 00:24:51,710 >> Gabe: Gabe. 701 00:24:51,710 --> 00:24:52,340 >> დევიდ ჯ Malan: Gabe. 702 00:24:52,340 --> 00:24:53,220 Gabe ის გზა. 703 00:24:53,220 --> 00:24:54,640 რა არის ყველაზე იოლი საქმეა? 704 00:24:54,640 --> 00:24:58,390 გაცვლა ამ ორ ბიჭებს და გაგრძელდება. 705 00:24:58,390 --> 00:24:59,020 ასე რომ, ახლა ვნახოთ. 706 00:24:59,020 --> 00:25:00,170 ვინ არის ყველაზე პატარა? 707 00:25:00,170 --> 00:25:01,030 ოთხი. 708 00:25:01,030 --> 00:25:01,990 ნება მომეცით მხოლოდ სახის მოტყუებას. 709 00:25:01,990 --> 00:25:03,090 ხუთი იქნება პატარა. 710 00:25:03,090 --> 00:25:05,220 მე მომდევნო, თუ, გსურთ დახევას წინ, რა უნდა გავაკეთოთ 711 00:25:05,220 --> 00:25:06,820 ეს ბიჭები, ერთად Gabe? 712 00:25:06,820 --> 00:25:08,450 გაცვლა კიდევ ერთხელ. 713 00:25:08,450 --> 00:25:10,740 ახლა, მაინც ოდნავ მწყობრიდან. 714 00:25:10,740 --> 00:25:14,140 აღმოვაჩინე Gabe უნდა იყოს პატარა, ასე მე პოპ მას, გადაადგილება თქვენ ბიჭები დასრულდა. 715 00:25:14,140 --> 00:25:15,190 და გაკეთდეს. 716 00:25:15,190 --> 00:25:17,200 >> ასე რომ, პასუხი არის იგივე. 717 00:25:17,200 --> 00:25:18,600 საბოლოო ჯამში არის იგივე. 718 00:25:18,600 --> 00:25:22,730 რომელი ამ ორი ალგორითმები უკეთესია? 719 00:25:22,730 --> 00:25:23,500 მეორე, მე გავიგე. 720 00:25:23,500 --> 00:25:24,252 რატომ? 721 00:25:24,252 --> 00:25:25,900 >> დინამიკები 3: ეს n ნაბიჯები [inaudible]. 722 00:25:25,900 --> 00:25:27,600 >> დევიდ ჯ Malan: ეს ო ნაბიჯები უმეტეს. 723 00:25:27,600 --> 00:25:28,490 საინტერესო. 724 00:25:28,490 --> 00:25:30,610 ისე არა? 725 00:25:30,610 --> 00:25:33,630 ასე რომ, რა მე პატარა ელემენტს? 726 00:25:33,630 --> 00:25:37,060 რამდენი ნაბიჯები არც მე უნდა მიიღოს იპოვოს ყველაზე პატარა ელემენტს? 727 00:25:37,060 --> 00:25:39,220 მე გამოიყურება ყველა გზა დასასრულს, არა? 728 00:25:39,220 --> 00:25:41,530 იმის გამო, რომ უარეს შემთხვევაში, რა თუ ნილ იყო აქ? 729 00:25:41,530 --> 00:25:45,700 ასე რომ მხოლოდ მოძიებაში ყველაზე პატარა ელემენტს იღებს me n ნაბიჯები, ან ო მინუს 1. 730 00:25:45,700 --> 00:25:46,100 თუმცა, OK. 731 00:25:46,100 --> 00:25:46,980 ასე დაფიქსირება ნილ. 732 00:25:46,980 --> 00:25:48,740 გახსოვდეთ, რომ, ერთი წუთით, არც ისე წინ. 733 00:25:48,740 --> 00:25:51,680 >> მაგრამ რა მე მომავალი პატარა ელემენტს? 734 00:25:51,680 --> 00:25:54,830 ეს ო მინუს 1, ან ო მინუს 2 ნამდვილად, ეხლა ისეთი ნაბიჯი. 735 00:25:54,830 --> 00:25:55,440 ასე რომ, OK. 736 00:25:55,440 --> 00:25:57,390 ასე რომ, მე n მინუს 2. 737 00:25:57,390 --> 00:25:57,600 ყველა უფლება. 738 00:25:57,600 --> 00:25:59,130 ასე რომ გრძნობს ცოტა უკეთესი. 739 00:25:59,130 --> 00:25:59,730 ყველა უფლება. 740 00:25:59,730 --> 00:26:03,270 რამდენი ნაბიჯები მომავალი დრო მოძიების ნომერი სამი? 741 00:26:03,270 --> 00:26:04,420 ასე რომ, ო მინუს 4. 742 00:26:04,420 --> 00:26:07,670 ამიტომ მცირდება, ერთი ნაკლები ნაბიჯი ყოველ iteration. 743 00:26:07,670 --> 00:26:08,740 ასე რომ, ეს იმას თავს კარგად გრძნობენ, არა? 744 00:26:08,740 --> 00:26:13,450 თუ ბოლო პერიოდში კი დაახლოებით n ჯერ n, ამ დროს ეს ო მინუს 1, პლუს ო minus 745 00:26:13,450 --> 00:26:16,500 2, პლუს ო მინუს 3, პლუს ო მინუს 4, dot, dot, dot. 746 00:26:16,500 --> 00:26:18,750 მაგრამ თუ გავიხსენებთ თქვენი უმაღლესი სკოლის სახელმძღვანელოების, პატარა მოტყუებას 747 00:26:18,750 --> 00:26:24,380 ფურცელი უკან რომ აქვს ფორმულები, თუ თქვენ დაამატოთ ეს სერია ნომრები, 748 00:26:24,380 --> 00:26:31,280 რა არის საერთო რაოდენობის ნაბიჯები იქნება, რომ მე აქ? 749 00:26:31,280 --> 00:26:36,580 >> ეს არის ერთ ერთი იმ, მინდა, ო minus 1, ჯერ n, იყოფა 2. 750 00:26:36,580 --> 00:26:39,040 ნება მომეცით, თუ მე შეიძლება გაიყვანოს ეს ყველაფერი მხოლოდ ერთი წუთით. 751 00:26:39,040 --> 00:26:42,230 ისევ და ისევ, მე ვარ ასეთი დამრგვალება ზოგიერთი ციფრები, მხოლოდ იმისათვის, რომ შევინარჩუნოთ ცხოვრების უბრალო, 752 00:26:42,230 --> 00:26:47,830 მაგრამ, როგორც მახსოვს, ეს რაღაც, თუ გავაკეთო ო მინუს 1 რამ, მაშინ n minus 753 00:26:47,830 --> 00:26:53,570 2, შემდეგ n მინუს 3, ეს უხეშად მსგავსი რამ დაახლოებით 2, და თუ 754 00:26:53,570 --> 00:26:55,510 გამრავლების ამ out, სწორედ რეალურად ო მოედანზე. 755 00:26:55,510 --> 00:26:58,940 ამით არ შეგრძნება ძალიან კარგი. ო მინუსი n მეტი 2. 756 00:26:58,940 --> 00:27:00,350 >> მაგრამ აქ რამ. 757 00:27:00,350 --> 00:27:03,720 კომპიუტერული მეცნიერების, როდესაც პრობლემები დავიწყოთ საინტერესო არის, როდესაც n 758 00:27:03,720 --> 00:27:04,700 იღებს მართლაც დიდი. 759 00:27:04,700 --> 00:27:08,110 ხოლო როდესაც n იღებს მართლაც დიდი, რომელი ეს ფასეულობები აპირებს დომინირებს ყველა 760 00:27:08,110 --> 00:27:09,750 საქართველოს სხვები? 761 00:27:09,750 --> 00:27:10,990 ეს არის სახის n კვადრატში, არა? 762 00:27:10,990 --> 00:27:13,340 დიახ, გამყოფი 2 არის საკმაოდ კარგი. 763 00:27:13,340 --> 00:27:16,740 მაგრამ თუ ვსაუბრობთ მილიარდობით ცალი მონაცემების, ან ტრილიონობით 764 00:27:16,740 --> 00:27:18,700 ცალი მონაცემებით, კი ბატონო, ასე თქვენ ორჯერ სწრაფად. 765 00:27:18,700 --> 00:27:22,440 მაგრამ, ვინც ნამდვილად ზრუნავს თუ ეს დიდი რაოდენობით, თუ არა ეს ფაქტორი არის ის, რაც იღებს 766 00:27:22,440 --> 00:27:23,040 უფრო დიდი და უფრო დიდი. 767 00:27:23,040 --> 00:27:25,990 და რა თქმა უნდა, ეს ქმნის მეტი სხვაობა, ვიდრე ეს ბიჭი. 768 00:27:25,990 --> 00:27:29,120 ასე რომ, მიუხედავად იმისა, რომ თქვენ ბიჭები არიან უფლებას, მეორე ალგორითმი, ჩვენ მას 769 00:27:29,120 --> 00:27:32,970 შერჩევის დალაგების, არის, რეალურ ცხოვრებაში, ცოტა სწრაფად პოტენციურად, რადგან მე ვარ 770 00:27:32,970 --> 00:27:35,360 მიღების ნაკლები და ნაკლები ნაბიჯებს ყოველ ჯერზე. 771 00:27:35,360 --> 00:27:37,340 >> ეს არ არის ნამდვილად საფუძვლიანად სწრაფად. 772 00:27:37,340 --> 00:27:41,430 იმიტომ, რომ თუ ჩვენ რეალურად შეუძლია ამ გარეთ დიდი ღირებულებები N, წლის ბოლოს 773 00:27:41,430 --> 00:27:44,750 დღეს, დიდი საკმარისი n, ეს ჯერ კიდევ მიმდინარეობს თავს საკმაოდ ნელი. 774 00:27:44,750 --> 00:27:46,770 ასევე, ნება მომეცით მიიღოს ერთი ბოლო უღელტეხილზე იმ. 775 00:27:46,770 --> 00:27:48,920 ეს არის ის რაც მინდა მოვუწოდო შერჩევა ერთგვარი. 776 00:27:48,920 --> 00:27:51,040 შეგიძლიათ ბიჭები აღადგინოთ საკუთარი თავი ერთი ბოლო დროს? 777 00:27:51,040 --> 00:27:53,550 ხოლო ამ უკანასკნელ შემთხვევაში, მე ვაპირებ შესთავაზოს რაღაც 778 00:27:53,550 --> 00:27:54,970 მოუწოდა ჩანართი ჯიშია. 779 00:27:54,970 --> 00:27:57,470 Insertion დალაგების მიმდინარეობს, კონცეპტუალურად, ოდნავ განსხვავებული. 780 00:27:57,470 --> 00:28:00,980 >> იმის ნაცვლად, რომ ბრუნდება და მეოთხე და შერჩევის ყველაზე პატარა ელემენტის, მე ვარ 781 00:28:00,980 --> 00:28:05,030 უბრალოდ აპირებს გამკლავება თითოეული ამ ბიჭები, როგორც მე ექმნებათ მათ, და ჩადეთ 782 00:28:05,030 --> 00:28:06,850 თავიანთ სწორი ადგილი. 783 00:28:06,850 --> 00:28:10,160 ასე რომ, მე მხოლოდ აპირებს დაიწყოს უნეტარესის, და მე ვხედავ, რომ ის ნომერი ოთხი. 784 00:28:10,160 --> 00:28:11,720 სად ნომერი ოთხი ეკუთვნის? 785 00:28:11,720 --> 00:28:14,940 მე არ დახარისხება დაიწყო არაფერი, ასე Grace იღებს დარჩენა უფლება არსებობს. 786 00:28:14,940 --> 00:28:18,355 ახლა კი მე ვაპირებ აცხადებენ, თუ შეიძლება მიიღოს ნაბიჯი თქვენი უფლება, ამ 787 00:28:18,355 --> 00:28:21,650 ჩემი დახარისხებული სია, ეს არის ჩემი დაუხარისხებელი დარჩენილი სიაში. 788 00:28:21,650 --> 00:28:23,260 ასე რომ, ახლა მე ვაპირებ გაგრძელება მომდევნო, და თქვენი სახელით კიდევ ერთხელ? 789 00:28:23,260 --> 00:28:23,700 >> BRANSON: Branson. 790 00:28:23,700 --> 00:28:24,150 >> დევიდ ჯ Malan: Branson. 791 00:28:24,150 --> 00:28:25,375 ასე რომ, Branson არის ნომერი ორი. 792 00:28:25,375 --> 00:28:27,490 ამიტომ, მე ვაპირებ თქვენ გარეთ მომენტში. 793 00:28:27,490 --> 00:28:30,940 ახლა, სად ეკუთვნის ამ მასივი? 794 00:28:30,940 --> 00:28:32,360 ასე რომ, უფლება მადლი. 795 00:28:32,360 --> 00:28:35,670 ასე რომ, კიდევ ერთხელ, ჩვენ სახის მიღების Grace ბევრი სამუშაო აქ. 796 00:28:35,670 --> 00:28:37,290 სად დააყენა თქვენ? 797 00:28:37,290 --> 00:28:40,120 ასე რომ, ჩვენ ვაპირებთ ლღობას თქვენ დატოვა და ჩადეთ Branson არსებობს. 798 00:28:40,120 --> 00:28:41,680 მაგრამ ახლა მე აცხადებენ, რომ თქვენ ბიჭები კეთდება. 799 00:28:41,680 --> 00:28:43,240 მაგრამ შეამჩნია, მე არ იყენებს დამატებითი სივრცე. 800 00:28:43,240 --> 00:28:45,130 ეს ჯერ კიდევ 2 ელემენტები აქ, 5 მეტი აქ. 801 00:28:45,130 --> 00:28:47,910 სულ მასივი ზომა არის 7, ამიტომ მე არ მოტყუების, ყველა უფლება? 802 00:28:47,910 --> 00:28:51,950 >> ასე რომ, ახლა ჩვენ გვაქვს, ერთად Gabe აქ, ნომერი ექვსი, სად ეკუთვნის? 803 00:28:51,950 --> 00:28:52,650 თქვენ მიიღო იღბლიანი ერთხელ. 804 00:28:52,650 --> 00:28:53,820 ასე რომ თქვენ დარჩენას უფლება არსებობს. 805 00:28:53,820 --> 00:28:57,210 უბრალოდ მცირე ნაბიჯი სწორი მხოლოდ იმისათვის, რომ ნათელია, რომ თქვენ გადანაწილებული. 806 00:28:57,210 --> 00:29:00,520 ახლა ჩვენ გვყავს ნილ ერთხელ, ნომერი ერთი, სად წავიდეთ? 807 00:29:00,520 --> 00:29:03,540 ახლა კი არის, სადაც ჩვენ დავიწყოთ, რომ ეს ალგორითმი, თუმცა პირველი 808 00:29:03,540 --> 00:29:05,950 ერთი შეხედვით, გრძნობს საკმაოდ ჭკვიანი, უყურებს რა არის დაახლოებით მოხდეს. 809 00:29:05,950 --> 00:29:07,370 თუ თქვენ წინ გადადგმული ნაბიჯია. 810 00:29:07,370 --> 00:29:09,260 >> სად გვინდა, რომ დააყენა ნილ? 811 00:29:09,260 --> 00:29:11,830 ასე რომ, ცხადია, აქ, ისე, თუ როგორ ნუ მივიღებთ ნილ იქ? 812 00:29:11,830 --> 00:29:12,970 მოდით ეს ნაბიჯ ნაბიჯ. 813 00:29:12,970 --> 00:29:15,620 Gabe, სად უნდა წავიდეთ? 814 00:29:15,620 --> 00:29:19,590 Yep, ასე მიიღოს ერთი დიდი ნაბიჯი, ან ორი ნახევარი ნაბიჯები, რათა 815 00:29:19,590 --> 00:29:20,820 ერთი ნაბიჯია იქ. 816 00:29:20,820 --> 00:29:21,750 უნეტარესის, თუ სად წავიდეთ? 817 00:29:21,750 --> 00:29:22,510 კარგი. 818 00:29:22,510 --> 00:29:23,500 ასე რომ, კიდევ ერთ ნაბიჯს. 819 00:29:23,500 --> 00:29:24,960 და ბოლოს, Branson? 820 00:29:24,960 --> 00:29:25,460 კიდევ ერთი ნაბიჯი. 821 00:29:25,460 --> 00:29:27,190 ახლა კი ჩვენ შეგვიძლია დააყენა ნილ შევიდა ადგილი. 822 00:29:27,190 --> 00:29:28,440 >> ასე რომ, ახლა, გააგრძელოს ამ ლოგიკით. 823 00:29:28,440 --> 00:29:32,420 მიუხედავად იმისა, რომ ჩვენ არ გადავიდა ნილ მეტი და მეტი და მეტი, იმისათვის, რომ მას 824 00:29:32,420 --> 00:29:36,420 სადაც ის მიდის, უარეს შემთხვევაში, მომდევნო ნომერი შეიძლება ექმნებათ იქნებოდა 825 00:29:36,420 --> 00:29:42,220 იყოს რიცხვი, ვთქვათ, იყო რიგი ნულოვანი, მაშინ ჩვენ ვაპირებთ გადაიტანოს ყველა 826 00:29:42,220 --> 00:29:42,730 ამ ბიჭებს. 827 00:29:42,730 --> 00:29:44,950 დავუშვათ, რომ არსებობს მთელი რიგი, უარყოფითი ერთი,, ჩვენ უნდა გადაიტანოს 828 00:29:44,950 --> 00:29:46,080 ყველა ამ ბიჭებს. 829 00:29:46,080 --> 00:29:48,500 ასე რომ, ჩვენ რეალურად მხოლოდ სახის flipping პრობლემის გარშემო, როგორიცაა, რომ ჩვენ 830 00:29:48,500 --> 00:29:52,620 გადაცემის ხარჯზე დან შერჩევის პროცესი ასე ჩასაგდები 831 00:29:52,620 --> 00:29:56,930 პროცესი, ისეთი, რომ თქვენ ბიჭები მქონდა გადაადგილება დაახლოებით N მინუსი რაღაც 832 00:29:56,930 --> 00:29:57,940 რიგი ნაბიჯები. 833 00:29:57,940 --> 00:30:01,200 და ეს ისეთი ნაბიჯი, რომელიც მხოლოდ აპირებს რომ გაიზარდოს როგორც მე მოვნიშნოთ ნომრები, 834 00:30:01,200 --> 00:30:04,730 თუ მე უნდა შევინარჩუნოთ shoving თქვენ ბიჭები უკან, და უკან, და უკან. 835 00:30:04,730 --> 00:30:08,320 >> ასე რომ სამწუხარო ის, ყველა ეს ალგორითმები არიან n კვადრატში. 836 00:30:08,320 --> 00:30:10,570 მოდით წავიდეთ წინ და მადლობა ამ ბიჭები და ვიზუალურად ეს ცოტა 837 00:30:10,570 --> 00:30:11,090 განსხვავებულად. 838 00:30:11,090 --> 00:30:12,312 ძალიან კარგად გაკეთდეს. 839 00:30:12,312 --> 00:30:14,120 >> [ტაში] 840 00:30:14,120 --> 00:30:15,030 >> ყველა უფლება. 841 00:30:15,030 --> 00:30:16,280 აქ თქვენ წასვლა. 842 00:30:16,280 --> 00:30:18,390 843 00:30:18,390 --> 00:30:18,470 მადლობა - 844 00:30:18,470 --> 00:30:19,190 >> BRANSON: [inaudible] შენარჩუნება ნომრები. 845 00:30:19,190 --> 00:30:21,990 >> დევიდ ჯ Malan: არა, შეგიძლიათ შენარჩუნება ნომრები, ასევე. 846 00:30:21,990 --> 00:30:23,440 ყველა უფლება. 847 00:30:23,440 --> 00:30:24,100 ლამაზად კეთდება. 848 00:30:24,100 --> 00:30:25,300 ყველა უფლება. 849 00:30:25,300 --> 00:30:30,510 მოდით ვნახოთ, შევძლებთ თუ არა ახლა შეაჯამებს უფრო სწრაფად და უფრო ვიზუალურად, 850 00:30:30,510 --> 00:30:33,410 ზუსტად ის, რაც მხოლოდ მოხდა აქ ასეთია. 851 00:30:33,410 --> 00:30:36,510 852 00:30:36,510 --> 00:30:38,770 მე ვაპირებ წავიდეთ წინ და გაიყვანოს up Firefox. 853 00:30:38,770 --> 00:30:41,310 ჩვენ ამას უკავშირებენ აქცია მე რა თქმა უნდა ნახვა. 854 00:30:41,310 --> 00:30:43,870 ჯავის ოდნავ შემაშფოთებელი მისაღებად სამუშაო ზოგიერთ ბრაუზერები ამ დღეებში. 855 00:30:43,870 --> 00:30:46,760 ასე რომ, თუ თქვენ ჩვენგან თამაში ამ სახლში, გააცნობიეროს, თქვენ უნდა გამოვიყენოთ Firefox 856 00:30:46,760 --> 00:30:47,990 მიიღოს ეს მუშაობა. 857 00:30:47,990 --> 00:30:50,440 და რა მე ვაპირებ ვუყოთ აქციის შემდეგ. 858 00:30:50,440 --> 00:30:54,875 >> ბოლოში, მე მაქვს მთელი bunch of მენიუს ვარიანტი, მათ შორის დაწყება და 859 00:30:54,875 --> 00:30:55,840 შეწყვიტოს ღილაკს. 860 00:30:55,840 --> 00:30:59,450 გარდა ამისა, როგორც განზე როგორც ჩანს, bug ამ პროგრამებში, სადაც თქვენ 861 00:30:59,450 --> 00:31:03,720 ვერ რეალურად ვხედავ დაწყების ან შეწყვიტოს ღილაკს, სანამ არ გამართავს სარდლობის ან Alt 862 00:31:03,720 --> 00:31:06,560 პლუს და მასშტაბის, რომელიც საინტერესოა გამოიტანს უფრო ღილაკებით. 863 00:31:06,560 --> 00:31:09,090 ასე რომ მხოლოდ FYI თუ ითამაშებს ამ სახლში. 864 00:31:09,090 --> 00:31:12,870 ახლა მე ვაპირებ დააწკაპუნეთ დაწყება მხოლოდ მომენტი, შემდეგ მიუთითებს შეფერხებას, 865 00:31:12,870 --> 00:31:16,810 ისევე როგორც, 200 მილიწამში აქ, უბრალოდ ასე რომ, ჩვენ ვხედავთ, რა მოხდება. 866 00:31:16,810 --> 00:31:20,180 >> ასე რომ, ამტკიცებენ, რომ ეს არის ვიზუალიზაციის პირველი ალგორითმი 867 00:31:20,180 --> 00:31:23,730 ეს ბიჭები გააკეთა, bubble sort, რომლის ჩვენ swapped ადამიანი წყვილი-ბრძენი. 868 00:31:23,730 --> 00:31:27,490 გასაღები რისთვისაც, ამ ვიზუალიზაცია ის არის, რომ სიმაღლე ბარები 869 00:31:27,490 --> 00:31:30,510 წარმოადგენს ზომის ნომერი. 870 00:31:30,510 --> 00:31:32,210 ასე რომ, taller ბარი, უფრო დიდი რაოდენობის. 871 00:31:32,210 --> 00:31:33,680 მოკლე ბარი, პატარა ნომერი. 872 00:31:33,680 --> 00:31:38,630 და თუ შეამჩნია, ჩვენ ვაპირებთ მეშვეობით პირველი iteration ამ ალგორითმი, 873 00:31:38,630 --> 00:31:42,620 შევცვალე დიდი და მცირე რაოდენობით, ისე, რომ მცირე რაოდენობა მოდის პირველი და 874 00:31:42,620 --> 00:31:44,280 დიდი რაოდენობით ღებულობენ უფლება. 875 00:31:44,280 --> 00:31:48,770 >> და როგორც კი მივიღებთ ბოლოს მასივი ბევრი უფრო ნომრები ათზე, ჩვენ 876 00:31:48,770 --> 00:31:49,900 აპირებს დაბრუნდეს დასაწყისში. 877 00:31:49,900 --> 00:31:51,140 და ითვალისწინებდეს ამ. 878 00:31:51,140 --> 00:31:54,860 მარცხენა მოშორებულ, რომ პატარა ბიჭი აპირებს სვოპ მხარეს, და ეს 879 00:31:54,860 --> 00:31:56,010 პროცესი მეორდება. 880 00:31:56,010 --> 00:31:59,450 ახლა ეს ვიზუალიზაცია სწრაფად იღებს მოსაწყენი, ასე რომ, ნება მომეცით წავიდეთ წინ და შეწყვიტოს 881 00:31:59,450 --> 00:32:04,170 იგი, შეცვალოს დაგვიანებით რაღაც ბევრად სწრაფად მხოლოდ მისაღებად, ახლა ფიქრობს 882 00:32:04,170 --> 00:32:05,060 ეს ალგორითმი. 883 00:32:05,060 --> 00:32:07,840 >> ასე რომ, მიუხედავად იმისა, რომ მე თავისი გუნდი ის, რომ ეს არის მოსწონს ამაღლების ჩემი პროცესორი, ყიდულობს 884 00:32:07,840 --> 00:32:08,580 ახალი კომპიუტერი. 885 00:32:08,580 --> 00:32:12,980 მე არ ძირეულად შეცვალა ჩემი ალგორითმი, მაგრამ თქვენ შეიძლება მართლაც უფრო მეტი 886 00:32:12,980 --> 00:32:16,800 ნათლად, ვიდრე ადამიანი, რომელიც დიდი ციფრები bubbling მდე საუკეთესო, 887 00:32:16,800 --> 00:32:20,900 და პატარა ციფრები bubbling ქვემოთ ბოლოში. 888 00:32:20,900 --> 00:32:22,390 ახლა კი ეს საგანი აქ ინახება. 889 00:32:22,390 --> 00:32:25,260 და როგორც გარდა, ამ მოედნებზე, არ არსებობს რამოდენიმე აღრიცხვის იქ 890 00:32:25,260 --> 00:32:28,010 დაგეხმაროთ ითვლიან რამდენი შედარება, ან რამდენი სვოპების აქვს 891 00:32:28,010 --> 00:32:28,950 რეალურად გაკეთდა. 892 00:32:28,950 --> 00:32:30,750 >> ასევე, შევეცადოთ ერთი სხვები დავინახეთ. 893 00:32:30,750 --> 00:32:37,116 ნება მომეცით დააწკაპუნეთ bubble sort აქ, და ნება მომეცით აირჩიოს და ეს მთელი ვებ გვერდზე 894 00:32:37,116 --> 00:32:38,936 ცოტა buggy. 895 00:32:38,936 --> 00:32:41,155 მოდით მიიღოს რისკი და აწარმოებს კიდევ ერთხელ. 896 00:32:41,155 --> 00:32:44,560 897 00:32:44,560 --> 00:32:45,030 იქ ჩვენ წავიდეთ. 898 00:32:45,030 --> 00:32:47,180 მოდით გავაკეთოთ შერჩევა ერთგვარი. 899 00:32:47,180 --> 00:32:49,140 არ ვიცი, რატომ მენიუ როგორც ჩანს, იქ. 900 00:32:49,140 --> 00:32:54,070 მოდით მასშტაბირების დაფიქსირება, რომ შეცდომაა, შეცვლის 50. 901 00:32:54,070 --> 00:32:56,020 Ah, მოდით რეალურად გააკეთებს რომ უფრო სწრაფად. 902 00:32:56,020 --> 00:32:59,160 ხუთი მილიწამებში ან ასე იქნება, და დაწყება. 903 00:32:59,160 --> 00:33:00,470 >> ასე რომ, ეს შერჩევის სახის. 904 00:33:00,470 --> 00:33:03,070 ასე რომ, კიდევ ერთხელ, ვიფიქროთ, რაც ჩვენ გააკეთა ადამიანები აქ. 905 00:33:03,070 --> 00:33:08,490 ჩვენ გამოვიარეთ მასივი შეარჩია ყველაზე პატარა ელემენტი, კიდევ ერთხელ, 906 00:33:08,490 --> 00:33:09,250 და ისევ, და ისევ. 907 00:33:09,250 --> 00:33:11,110 ახლა კი აცხადებენ, რომ ჯერ კიდევ ძალიან ცუდი. 908 00:33:11,110 --> 00:33:15,010 ეს იყო ჯერ კიდევ n კვადრატში, მისცეს ან, მაგრამ ეს იყო, რეალურ სამყაროში, ცოტა 909 00:33:15,010 --> 00:33:18,280 სწრაფად, იმიტომ, რომ მე ნამდვილად აღების ოდნავ ნაკლები ნაბიჯები ყოველ ჯერზე. 910 00:33:18,280 --> 00:33:19,800 მაგრამ ჩვენ მხოლოდ ვსაუბრობთ, თუ რა? 911 00:33:19,800 --> 00:33:21,830 შესაძლოა 40 ან იმდენად ბარები აქ? 912 00:33:21,830 --> 00:33:23,200 ჩვენ არ ვსაუბრობთ 40 მლნ. 913 00:33:23,200 --> 00:33:27,430 ამიტომ არ არის სრულიად ნათელი, რომ მართლაც მნიშვნელოვანი მომატება. 914 00:33:27,430 --> 00:33:32,530 >> ნება მიბოძეთ ახლა დაბრუნდეს და შეცვალოს ჩვენი მესამე ალგორითმი, რომელიც შერჩევა 915 00:33:32,530 --> 00:33:33,180 ჩანართი ჯიშია. 916 00:33:33,180 --> 00:33:36,380 ახლა კი ეს ნამდვილად buggy რადგან menu ნამდვილად არ უნდა იყოს დახვდა. 917 00:33:36,380 --> 00:33:40,840 ასე რომ, ახლა ჩვენ გადახვევა უკან აქ და დავიწყოთ ეს ალგორითმი. 918 00:33:40,840 --> 00:33:43,270 Whoop, დაწყებისა და გაჩერების. 919 00:33:43,270 --> 00:33:47,160 ასე რომ, ეს ერთი სახის აქვს საკმაოდ ნიმუში მას, რომლის დროსაც ჩვენ კვლავ 920 00:33:47,160 --> 00:33:50,240 ჩასმის ადამიანი, ან ამ შემთხვევაში, ბარები შევიდა 921 00:33:50,240 --> 00:33:52,620 შესაბამის ადგილას. 922 00:33:52,620 --> 00:33:55,430 და ეს უკვე გააკეთა ადრე მე აღმოჩნდა გარშემო. 923 00:33:55,430 --> 00:33:58,940 მაგრამ ეს ერთი, ძალიან, თეორიულად, ჯერ კიდევ n კვადრატში. 924 00:33:58,940 --> 00:34:01,430 >> ასე რომ ვნახოთ, შევძლებთ თუ არა შეაჯამებს ეს შემდეგნაირად. 925 00:34:01,430 --> 00:34:04,750 მე ვაპირებ წავიდეთ წინ და უბრალოდ მისცეს ჩვენს ერთგვარი საერთო გზა ვსაუბრობთ 926 00:34:04,750 --> 00:34:08,489 აღნიშნულ საკითხებთან ერთად, ნება მომეცით წარმოგიდგინოთ უბრალოდ ცოტა notation აქ. 927 00:34:08,489 --> 00:34:12,480 თქვენ შესახებ, რომ ნახოთ რაღაც მოუწოდა დიდი ო, იმიტომ, რომ ეს ფაქტიურად დიდი 928 00:34:12,480 --> 00:34:16,320 ო და ეს არის გზა, რომელიც კომპიუტერული მეცნიერს ან მათემატიკოსი კი იყენებს 929 00:34:16,320 --> 00:34:19,230 აღწერა ქრონომეტრაჟი ზოგიერთი ალგორითმი. 930 00:34:19,230 --> 00:34:21,400 რამდენი ნაბიჯები სჭირდება პრაქტიკულად? 931 00:34:21,400 --> 00:34:25,080 >> ახლა მე ვაპირებ გართულებების თავს ერთად ჩემი ხელწერა აქ რაღაც მომენტში. 932 00:34:25,080 --> 00:34:29,020 მაგრამ ნება მიბოძეთ წავიდეთ წინ და ამბობენ, რომ ეს იქნება დიდი O მეტი აქ. 933 00:34:29,020 --> 00:34:33,610 და ნება მომეცით წარმოგიდგინოთ ერთი სხვა სიმბოლო, დედაქალაქში omega. 934 00:34:33,610 --> 00:34:37,080 Omega იქნება, პირიქით, არსებითად, დიდი ო ვინაიდან დიდი O 935 00:34:37,080 --> 00:34:40,790 საშუალებებით, უარეს შემთხვევაში, რამდენ დროს შესაძლოა, ზოგიერთი ალგორითმი მიიღოს, ამ 936 00:34:40,790 --> 00:34:43,480 თვალსაზრისით N, omega აპირებს იყოს რამდენ დროს შეიძლება იგი 937 00:34:43,480 --> 00:34:45,409 მიიღოს საუკეთესო შემთხვევაში. 938 00:34:45,409 --> 00:34:48,090 და ჩვენ ვხედავთ, რას ვგულისხმობთ საუკეთესო შემთხვევაში რაღაც მომენტში. 939 00:34:48,090 --> 00:34:49,940 >> მოდით ახლა გადავიდეთ რაღაც მარტივი. 940 00:34:49,940 --> 00:34:54,719 ნება მომეცით იწყება წრფივი ძიება. 941 00:34:54,719 --> 00:34:55,679 ასე რომ, არა დახარისხება. 942 00:34:55,679 --> 00:34:58,000 ჩვენ ამას დავარქმევთ წრფივი ძიება. 943 00:34:58,000 --> 00:35:01,140 ახლა კი, მიიღოს პატარა მაგიდა აქედან. 944 00:35:01,140 --> 00:35:06,600 ახლა კი, იმ შემთხვევაში, წრფივი ძებნა, უარეს შემთხვევაში, რამდენი ნაბიჯების გადადგმას 945 00:35:06,600 --> 00:35:11,770 იგი აპირებს me იპოვონ რიგი თვითნებური არჩევანი? 946 00:35:11,770 --> 00:35:14,540 და არ არსებობს N სულ კარი ან N სულ ნომრები. 947 00:35:14,540 --> 00:35:15,940 უარეს შემთხვევაში. 948 00:35:15,940 --> 00:35:18,800 რამდენი ნაბიჯები ვარ მე აპირებს უნდა მიიღოს მოძიების ნომერი 50 მასივში 949 00:35:18,800 --> 00:35:20,830 საქართველოს ო კარი? 950 00:35:20,830 --> 00:35:21,410 და რატომ? 951 00:35:21,410 --> 00:35:23,680 იმის გამო, რომ ეს შეიძლება იყოს ყველა გზა მეტი გადატანა ბოლომდე. 952 00:35:23,680 --> 00:35:27,120 ასე რომ ჰგავს Jennifer შეექმნა, ნომერი 50 იყო ყველა გზა დასრულდა, ისე 953 00:35:27,120 --> 00:35:30,760 უარეს შემთხვევაში წრფივი ძებნა დიდი ო ნ, ჩვენ ვთქვა. 954 00:35:30,760 --> 00:35:33,430 >> რაც შეეხება საუკეთესო შემთხვევაში, თუ თქვენ ნამდვილად გაუმართლა? 955 00:35:33,430 --> 00:35:36,200 უბრალოდ აპირებს ერთი ნაბიჯია, ან მუდმივი რიგი ნაბიჯები. 956 00:35:36,200 --> 00:35:37,830 ასე რომ, ჩვენ აღწერს, რომ როგორც 1. 957 00:35:37,830 --> 00:35:39,010 ასე რომ, ეს არის საკმაოდ კარგი. 958 00:35:39,010 --> 00:35:41,210 ახლა რა მოხდება, თუ ჩვენ გავაკეთეთ რაღაც მინდა ორობითი ძიება? 959 00:35:41,210 --> 00:35:43,860 960 00:35:43,860 --> 00:35:47,846 ასე რომ ბინარული ძებნის, უარეს შემთხვევაში, აიღო რა დრო? 961 00:35:47,846 --> 00:35:49,250 >> [INTERPOSING ხმები] 962 00:35:49,250 --> 00:35:51,310 >> დევიდ ჯ Malan: ასე რომ, რეალურად, მე ესმა რამდენიმე ადგილებში. 963 00:35:51,310 --> 00:35:56,390 ასე რომ, ეს, ფაქტობრივად, სისტემიდან N, მისცეს ან, რადგან როგორც ჩვენ დაყოს სია ნახევარ 964 00:35:56,390 --> 00:36:00,730 ისევ და ისევ, და ისევ, და ისევ, ჩვენ საშუალება მოძიების, საბოლოო ჯამში, ღირებულება, 965 00:36:00,730 --> 00:36:04,750 თუ ეს არსებობს, მაგრამ არსებობს დაჭერა. 966 00:36:04,750 --> 00:36:08,590 რა არის ვარაუდი, რომ ჩვენ თავისთავად ბინარული ძიება? 967 00:36:08,590 --> 00:36:09,700 აქვე უნდა გადანაწილებული. 968 00:36:09,700 --> 00:36:12,770 ეს არ გადანაწილებული, შეგიძლიათ გაყოფილი რამ ნახევარი ისევ და ისევ, და თქვენ 969 00:36:12,770 --> 00:36:15,490 შეიძლება დაუტოვებიათ, და შეგიძლიათ უფლება, და შეგიძლიათ მარცხენა და მარჯვენა, მაგრამ თქვენ 970 00:36:15,490 --> 00:36:18,070 არ აპირებს მოვძებნოთ ელემენტს თუ სიაში არ არის გადანაწილებული, რადგან 971 00:36:18,070 --> 00:36:18,790 თქვენ შეიძლება გამოგრჩეთ ეს. 972 00:36:18,790 --> 00:36:22,120 რადგან თქვენი heuristic, რადგან მიმდინარეობს მარცხენა ან მარჯვნივ უნდა გაყალბდა თუ ეს 973 00:36:22,120 --> 00:36:23,420 მართლაც არ გადანაწილებული. 974 00:36:23,420 --> 00:36:26,110 ასე რომ ერთგვარი ფარული ღირებულება გამოყენებით მსგავსი რამ. 975 00:36:26,110 --> 00:36:29,250 >> ახლა მოდით წასვლას ჩვენი დახარისხება ალგორითმები არ ეძებს - 976 00:36:29,250 --> 00:36:31,140 oh, ფაქტობრივად, მოდით წავიდეთ ამ ცარიელი. 977 00:36:31,140 --> 00:36:33,190 ორობითი ძებნის საუკეთესო შემთხვევაში? 978 00:36:33,190 --> 00:36:36,290 ეს ასევე 1 თუ უბრალოდ ხდება, ძალზე შუა მასივი, ან 979 00:36:36,290 --> 00:36:37,810 შუა სატელეფონო წიგნი. 980 00:36:37,810 --> 00:36:39,710 ახლა ამის გაკეთება bubble sort. 981 00:36:39,710 --> 00:36:42,570 ასე რომ, კიდევ ერთხელ, ახლა ჩვენ შესვლისას სახის, არ ეძებს. 982 00:36:42,570 --> 00:36:47,220 >> უარეს შემთხვევაში, რამდენი ნაბიჯები მივიღეთ სარჩელი bubble sort აპირებს მიიღოს? 983 00:36:47,220 --> 00:36:48,410 n კვადრატში. 984 00:36:48,410 --> 00:36:49,200 ამიტომ, მე ვაპირებ შევაჩერო, რომ. 985 00:36:49,200 --> 00:36:51,710 Ooh, ჩემი ხელწერა გამოიყურება უარესი როდესაც ის დაპროექტებული, რომ დიდი. 986 00:36:51,710 --> 00:36:52,510 ყველა უფლება. 987 00:36:52,510 --> 00:36:53,570 ასე რომ, n კვადრატში. 988 00:36:53,570 --> 00:36:59,460 და საუკეთესო შემთხვევაში, bubble sort, რამდენი ნაბიჯები იგი აპირებს? 989 00:36:59,460 --> 00:37:00,980 1, გავიგე. 990 00:37:00,980 --> 00:37:01,760 >> დინამიკები 1: n. 991 00:37:01,760 --> 00:37:03,286 >> დევიდ ჯ Malan: n, გავიგე. 992 00:37:03,286 --> 00:37:04,200 >> დინამიკები 1: 2. 993 00:37:04,200 --> 00:37:05,010 >> დევიდ ჯ Malan: 2, გავიგე. 994 00:37:05,010 --> 00:37:06,670 ნუ მესმის 3? 995 00:37:06,670 --> 00:37:07,080 ყველა უფლება. 996 00:37:07,080 --> 00:37:11,390 ასე რომ მე მოვისმინე 1, N 2, მაგრამ გააშუქა გარდა, სულ მცირე, პირველი იმ 997 00:37:11,390 --> 00:37:12,330 წინადადებები, 1. 998 00:37:12,330 --> 00:37:15,370 ეს არ არის ცუდი ინსტიქტი, რადგან ეს სახის შემდეგნაირად ნიმუში აქ. 999 00:37:15,370 --> 00:37:19,670 მაგრამ თუ ეს მხოლოდ იღებს 1 ნაბიჯი, თუნდაც მსოფლიოში ვერ I აცხადებენ, რომ სიაში 1000 00:37:19,670 --> 00:37:22,900 ინახება, რადგან თუ მე ნებადართულია მხოლოდ მიიღოს 1 ნაბიჯი, რამდენი ელემენტები 1001 00:37:22,900 --> 00:37:25,230 შეიძლება მე რეალურად შესამოწმებლად დარწმუნებული უნდა იყოს? 1002 00:37:25,230 --> 00:37:28,270 ისე, მხოლოდ 1, რაც ნიშნავს, რომ არსებობს n მინუს 1 ელემენტს, რომლებიც შესაძლოა იყოს გარეთ 1003 00:37:28,270 --> 00:37:31,310 იმისათვის, და მე მხოლოდ მიმდინარეობს რწმენის შემდეგ ეძებს 1 ელემენტი, რომელიც 1004 00:37:31,310 --> 00:37:31,850 რამ ინახება. 1005 00:37:31,850 --> 00:37:33,930 ამგვარად 1 არ გამოსწორებას აქ. 1006 00:37:33,930 --> 00:37:35,710 ასე რომ, მინიმუმ, რამდენი მაქვს, რომ შევხედოთ? 1007 00:37:35,710 --> 00:37:36,680 >> [INTERPOSING ხმები] 1008 00:37:36,680 --> 00:37:40,160 >> დევიდ ჯ Malan: N მინუს 1, ან მართლაც, ნ, იმიტომ, რომ მე უნდა შევხედოთ ყველა 1009 00:37:40,160 --> 00:37:42,190 ელემენტს დავრწმუნდეთ, რომ ეს არ არის მწყობრიდან. 1010 00:37:42,190 --> 00:37:44,750 თუმცა ისევ და ისევ, ჩვენ ერთგვარი ტალღა ჩვენი ხელში პატარა ნომრები და 1011 00:37:44,750 --> 00:37:47,100 ვივარაუდოთ, რომ, როგორც ო იღებს დიდი, ისინი უინტერესო მაინც. 1012 00:37:47,100 --> 00:37:48,380 ასე რომ, bubble sort. 1013 00:37:48,380 --> 00:37:49,830 ახლა კი, მოდით ეს ბოლო ორი. 1014 00:37:49,830 --> 00:37:53,520 შერჩევა დალაგების, და შემდეგ ჩვენ გამოგიგზავნით ამის გაკეთება ჩანართი ჯიშია. 1015 00:37:53,520 --> 00:37:57,160 და მაშინ ჩვენ აფეთქება თქვენი გონებაში რაღაც ბევრად 1016 00:37:57,160 --> 00:37:58,926 უკეთესია, ვიდრე ყველა მათგანი. 1017 00:37:58,926 --> 00:38:00,410 ყველა უფლება. 1018 00:38:00,410 --> 00:38:04,700 >> რა არის უარეს შემთხვევაში გაშვებული დრო შერჩევა ერთგვარი? 1019 00:38:04,700 --> 00:38:05,680 >> დინამიკები 4: n კვადრატში. 1020 00:38:05,680 --> 00:38:06,710 >> დევიდ ჯ Malan: N მოედანი, მე მოსმენა. 1021 00:38:06,710 --> 00:38:09,790 მაგრამ რატომ n კვადრატში, ინტუიციურად? 1022 00:38:09,790 --> 00:38:11,170 >> დინამიკები 4: იმის გამო, რომ ჩვენ უბრალოდ ეს გააკეთა. 1023 00:38:11,170 --> 00:38:12,260 >> დევიდ ჯ Malan: იმის გამო, რომ ჩვენ უბრალოდ ეს გააკეთა. 1024 00:38:12,260 --> 00:38:12,550 OK. 1025 00:38:12,550 --> 00:38:13,380 კარგი პასუხი. 1026 00:38:13,380 --> 00:38:16,660 მაგრამ ინტუიციურად, რატომ არის შერჩევა დალაგების n კვადრატში? 1027 00:38:16,660 --> 00:38:18,980 რა უნდა გავაკეთოთ ისევ და ისევ? 1028 00:38:18,980 --> 00:38:22,570 ჩვენ უნდა შევინარჩუნოთ სკანირების მეშვეობით, რომლებიც თქვენ ყველაზე პატარა, თქვენ 1029 00:38:22,570 --> 00:38:24,020 პატარა, ხარ პატარა. 1030 00:38:24,020 --> 00:38:27,480 და გაცემული, ჩვენ შევძელით მიიღოს ო ნაბიჯებს, მაშინ n მინუს 1, მაშინ n მინუს 2. 1031 00:38:27,480 --> 00:38:30,700 მაგრამ თუ ასეთი დავამატებთ იმ მა ან მას არ მონაწილეობს რწმენა, რომ მე დასძინა 1032 00:38:30,700 --> 00:38:34,810 მათ წინასწარ, მივიღებთ დაახლოებით n squared მინუსი ზოგიერთი უფრო პატარა ნომრები. 1033 00:38:34,810 --> 00:38:36,730 ამიტომ, მე ვაპირებ მოვუწოდო ამ n კვადრატში. 1034 00:38:36,730 --> 00:38:39,530 მაგრამ შერჩევა ერთგვარი საუკეთესო იმ შემთხვევაში, თუ რამდენი ნაბიჯები არის ეს 1035 00:38:39,530 --> 00:38:40,632 აპირებს მე? 1036 00:38:40,632 --> 00:38:41,840 >> დინამიკები 5: [inaudible] 1037 00:38:41,840 --> 00:38:44,350 >> დევიდ ჯ Malan: ეს, სამწუხაროდ ჯერ კიდევ n კვადრატში, არა? 1038 00:38:44,350 --> 00:38:49,590 იმიტომ, რომ თუ მე შერჩევისას ყველაზე პატარა ელემენტს, და ჩვენ შვიდი ადამიანი აქ, 1039 00:38:49,590 --> 00:38:53,280 მე მხოლოდ ვიცი, ერთხელ მოხვედრა ძალიან საბოლოოდ, რომ მე ი პატარა 1040 00:38:53,280 --> 00:38:55,670 ნომერი, ნებისმიერ სიტუაციაში ან მან შეიძლება ყოფილიყო. 1041 00:38:55,670 --> 00:38:58,820 მაგრამ როგორ მოვძებნო შემდეგი ყველაზე პატარა ნომერი? 1042 00:38:58,820 --> 00:39:00,160 მე უნდა გავაკეთოთ კიდევ ერთი უღელტეხილი. 1043 00:39:00,160 --> 00:39:04,810 ასე რომ, საუკეთესო შემთხვევაში, რა არის შეყვანის შერჩევის დალაგების? 1044 00:39:04,810 --> 00:39:07,830 ეს უკვე ერთგვარი სია, ნომერ, მეორე, მესამე, ნომერი ოთხი. 1045 00:39:07,830 --> 00:39:08,600 მაგრამ მე კომპიუტერში. 1046 00:39:08,600 --> 00:39:10,190 მე შემიძლია მხოლოდ ვუყურებდეთ რამ დროს. 1047 00:39:10,190 --> 00:39:12,465 მე ვერ ერთგვარი მიიღოს ნაბიჯი უკან ისევე როგორც ადამიანის და აცხადებენ, 1048 00:39:12,465 --> 00:39:14,030 Ooh, ეს გამოიყურება სწორი. 1049 00:39:14,030 --> 00:39:17,580 >> მე შემიძლია მხოლოდ განიხილავს სისწორის in შერჩევა ერთგვარი შერჩევით 1050 00:39:17,580 --> 00:39:18,370 ყველაზე პატარა ნომერი. 1051 00:39:18,370 --> 00:39:21,390 თუმცა, მე ნომერ პირველი, თუ მე არ ვიცი არაფერი შესახებ 1052 00:39:21,390 --> 00:39:24,460 სხვა ნომრები, რომელიც მე არ, ყველა მე ვიცი, რომ მე გადაეცა მასივი 1053 00:39:24,460 --> 00:39:27,930 ან კომპლექტი კარი უკან, რომლებიც ციფრები, ერთადერთი გზა, მე ვიცი, რომ ერთი 1054 00:39:27,930 --> 00:39:28,680 იყო პატარა? 1055 00:39:28,680 --> 00:39:32,440 თუ მივიღებ ყველა გზა აქ და გააცნობიეროს, რა, ერთი მართლაც პატარა. 1056 00:39:32,440 --> 00:39:34,870 >> მაგრამ როგორ შემიძლია შემდგომში გადაწყვეტს, რომ ორი არის მომავალი პატარა? 1057 00:39:34,870 --> 00:39:38,350 ამით იგივე არაეფექტურობა ისევ და ისევ. 1058 00:39:38,350 --> 00:39:42,210 საბოლოოდ, ერთად Insertion დალაგების, როგორ, უარეს შემთხვევაში, 1059 00:39:42,210 --> 00:39:44,990 საერთოდ ვამბობთ ასრულებს? 1060 00:39:44,990 --> 00:39:49,100 ეს ესეც n კვადრატში. 1061 00:39:49,100 --> 00:39:53,020 და რა საუკეთესო შემთხვევაში? 1062 00:39:53,020 --> 00:39:56,282 ჩვენ დავტოვებთ, რომ როგორც cliffhanger. 1063 00:39:56,282 --> 00:40:00,090 ჩვენ ამის შევსება, რომ ცარიელი მომავალში, მაგრამ პირველი ნება მომეცით შესთავაზოს, რომ ჩვენ 1064 00:40:00,090 --> 00:40:02,620 ფუნდამენტურად ამის გაკეთება უკეთესია, ვიდრე ყველა ჩამოთვლილი, ყველა უფლება? 1065 00:40:02,620 --> 00:40:05,220 >> ასე რომ, ვფიქრობ, თავს რა ჩასაგდები დალაგების იქნება. 1066 00:40:05,220 --> 00:40:06,910 ისე, რომ არ იყო ძალიან დრამატული, რადგან მე მხოლოდ ერთი 1067 00:40:06,910 --> 00:40:08,970 რომ დაინახა ცვლილება. 1068 00:40:08,970 --> 00:40:09,620 Wow. 1069 00:40:09,620 --> 00:40:10,420 OK. 1070 00:40:10,420 --> 00:40:12,615 ასე რომ, აქ ჩვენ გვაქვს გარკვეულწილად სხვადასხვა დემონსტრირება. 1071 00:40:12,615 --> 00:40:16,580 თუ მე გასადიდებლად აქ, თქვენ ნახავთ, რომ მარცხენა გვაქვს bubble sort, ამ 1072 00:40:16,580 --> 00:40:20,740 შუა გვაქვს შერჩევის დალაგების, და შორს უფლება, ჩვენ გვაქვს რაღაც ჩვენ 1073 00:40:20,740 --> 00:40:23,380 არ შევხედე ჯერ კიდევ მოუწოდა შერწყმა სახის. 1074 00:40:23,380 --> 00:40:26,080 მაგრამ რა ჩვენ აკეთებს აქ დღემდე იმყოფება. 1075 00:40:26,080 --> 00:40:29,200 როდესაც ჯენიფერი პირველად გამოვიდა სცენაზე, ჩვენ გაიარა მასივი ნომრები 1076 00:40:29,200 --> 00:40:33,750 ერთხელ, და კიდევ ერთხელ წრფივი ძებნა, და მივიღეთ წრფივი ქრონომეტრაჟი, დიდი O 1077 00:40:33,750 --> 00:40:35,100 საქართველოს ო, ასე ვთქვათ. 1078 00:40:35,100 --> 00:40:41,000 >> როდესაც ჩვენ განვიხილოთ პირველ კვირას კლასის, როცა ჩვენ გვქონდა გათიშე და დაპყრობას, 1079 00:40:41,000 --> 00:40:43,740 და ჩვენ რომ სატელეფონო წიგნი tearing, და ჯენიფერი და ჩვენ ერთობლივად 1080 00:40:43,740 --> 00:40:47,500 leveraged რომ მთავარი ქათამაძე, რომელიც ვიმეორებ თავს ისევ და ისევ 1081 00:40:47,500 --> 00:40:50,930 რატომღაც სროლა მოშორებით, სროლა მოშორებით, სროლა მოშორებით, ნახევარი პრობლემა, ან 1082 00:40:50,930 --> 00:40:55,320 ზოგადად, გამყოფი პრობლემა ნახევარი, ხოლო შემდეგ მკურნალობის პატარა ნატეხი 1083 00:40:55,320 --> 00:40:59,630 პრობლემა, როგორც კონცეპტუალური ექვივალენტს მეორე, ჩვენ როგორღაც გააკეთა 1084 00:40:59,630 --> 00:41:00,910 ფუნდამენტურად უკეთესი. 1085 00:41:00,910 --> 00:41:04,720 მაგრამ bubble sort, რომლის შერჩევა დალაგების, ერთად Insertion დალაგების, ჩვენ შეუძლია 1086 00:41:04,720 --> 00:41:06,560 ასეთი მოსაზრება, რომ ჯენიფერი გააკეთა. 1087 00:41:06,560 --> 00:41:10,220 ჩვენ საკმაოდ ბევრი უბრალოდ დადიოდა და უკან მეოთხე მთელი bunch of ჯერ, და ჩვენ 1088 00:41:10,220 --> 00:41:12,650 tweaked რამ ცოტა, შევცვალე ამ მიზნით, შესაძლოა, 1089 00:41:12,650 --> 00:41:13,730 ჩასმის ან შერჩევით. 1090 00:41:13,730 --> 00:41:16,950 თუმცა, დღის ბოლოს, მე ბევრი საქართველოს უხერხულ სიარულის უკან და სხვა. 1091 00:41:16,950 --> 00:41:21,160 ჩვენ ნამდვილად არ ბერკეტები რაღაც ჭკვიანი, როგორიცაა Jennifer გააკეთა მსგავსად გამყოფი 1092 00:41:21,160 --> 00:41:22,040 და დაპყრობის. 1093 00:41:22,040 --> 00:41:25,620 >> ასე რომ შერწყმა დალაგების, პირიქით, რაც ჩვენ ვერ ვხედავ, სანამ მომავალ კვირას, ის აპირებს 1094 00:41:25,620 --> 00:41:29,540 to ბერკეტი, რომ მთავარი იდეა მიერ გამყოფი შეყვანა, შემდეგ კი საჯელის განახევრებას, შემდეგ კი 1095 00:41:29,540 --> 00:41:30,580 საჯელის განახევრებას, შემდეგ კი საჯელის განახევრებას. 1096 00:41:30,580 --> 00:41:34,590 და თითოეულ iteration რომ მარყუჟის დახარისხება მარცხენა ნახევარში და უფლება 1097 00:41:34,590 --> 00:41:38,200 ნახევარი, მაშინ მარცხენა ნახევარში მარცხენა ნახევარში, და მარჯვენა ნახევარში მარცხენა, მაშინ 1098 00:41:38,200 --> 00:41:40,990 მარცხენა ნახევარში მარჯვენა ნახევარში და მარჯვენა ნახევარში მარჯვენა ნახევარში. 1099 00:41:40,990 --> 00:41:42,840 და იმეორებს ისევ და ისევ. 1100 00:41:42,840 --> 00:41:46,170 >> ასე რომ, თქვენ ნახავთ ამ ვიზუალურად, მაგრამ ეს არის ის, რაც გველოდება მომავალ კვირას. 1101 00:41:46,170 --> 00:41:49,760 და საერთოდ, როცა ჩვენ ვფიქრობთ, პატარა ცოტა უფრო რთული ასეთი ხასიათის პრობლემას. 1102 00:41:49,760 --> 00:41:52,435 1103 00:41:52,435 --> 00:41:57,970 ჩვენ n კვადრატში მარცხენა ო squared ცენტრიდან, და N 1104 00:41:57,970 --> 00:41:59,400 სისტემიდან ო მარჯვენა. 1105 00:41:59,400 --> 00:42:00,590 ასე რომ თქვენი რეალური cliffhanger. 1106 00:42:00,590 --> 00:42:02,040 ჩვენ დავინახავთ, თქვენ ორშაბათს. 1107 00:42:02,040 --> 00:42:05,163 >> [ტაში]