1 00:00:00,000 --> 00:00:03,332 >> [მუსიკის დაკვრა] 2 00:00:03,332 --> 00:00:06,490 >> Andi Peng: კეთილი კვირაში 3 მონაკვეთზე. 3 00:00:06,490 --> 00:00:09,550 მადლობა, შენ, ყველა მოდის ამ ადრე დაიწყება დღეს. 4 00:00:09,550 --> 00:00:11,466 ჩვენ მივიღეთ ლამაზი, პატარა ინტიმური ჯგუფი დღეს. 5 00:00:11,466 --> 00:00:14,570 ასე რომ, იმედია მივიღებთ ფერი, ალბათ, ადრე, 6 00:00:14,570 --> 00:00:15,780 ცოტა ადრეული დღეს. 7 00:00:15,780 --> 00:00:22,057 ასე სწრაფად, რამდენიმე განცხადებები დღის წესრიგში დღეს. 8 00:00:22,057 --> 00:00:23,890 დაწყებამდე, ჩვენ აპირებს უბრალოდ მეტი 9 00:00:23,890 --> 00:00:28,910 რამდენიმე მოკლე ლოგისტიკური საკითხების, pset კითხვები, გამოკითხვა, რამ, როგორიცაა, რომ. 10 00:00:28,910 --> 00:00:30,250 და მაშინ ჩვენ ჩაყვინთვის უფლება. 11 00:00:30,250 --> 00:00:34,710 ჩვენ ვიყენებთ debugger ეწოდება GDB, რომ დაიწყოს ედავებიან ჩვენი კოდი, რომელიც დავით 12 00:00:34,710 --> 00:00:36,550 განმარტა ლექცია მეორე დღეს. 13 00:00:36,550 --> 00:00:39,420 ჩვენ წავიდეთ მეტი ოთხი ტიპის სახის. 14 00:00:39,420 --> 00:00:42,310 ჩვენ წავიდეთ მათ საკმაოდ სწრაფად მას შემდეგ, რაც ისინი საკმაოდ ინტენსიური. 15 00:00:42,310 --> 00:00:45,710 მაგრამ ვიცი, რომ ყველა სლაიდები და კოდის ყოველთვის ონლაინ რეჟიმში. 16 00:00:45,710 --> 00:00:50,810 ასე რომ, შეგიძლიათ, თქვენს perusal, რომ დაბრუნდეს და შევხედოთ, რომ. 17 00:00:50,810 --> 00:00:53,930 >> ჩვენ გავლა asymptotic ნოტაცია, რომელიც 18 00:00:53,930 --> 00:00:55,944 არის მხოლოდ ლამაზი გზა რომ "runtimes," 19 00:00:55,944 --> 00:00:58,360 სადაც ჩვენ გვაქვს დიდი O, რომელიც დავით განმარტა ლექცია. 20 00:00:58,360 --> 00:01:01,550 ჩვენ ასევე გვაქვს Omega, რომელიც არის ქვედა ზღვარი დგინდება გაშვების დროს. 21 00:01:01,550 --> 00:01:06,450 და ჩვენ ვსაუბრობთ ცოტა მეტი სიღრმისეული დაკავშირებით, თუ როგორ იმ სამუშაოს. 22 00:01:06,450 --> 00:01:10,160 და ბოლოს, ჩვენ წავიდეთ მეტი ორობითი ძებნა, იმიტომ, რომ ბევრი თქვენგანი, ვინც უკვე 23 00:01:10,160 --> 00:01:15,190 მოხვდა თქვენს psets ალბათ იცით, რომ რომ არის საკითხი, რომელიც არის თქვენი pset. 24 00:01:15,190 --> 00:01:17,470 ასე, რომ თქვენ ყველა იყოს ბედნიერი რომ ჩვენ დაფარავს ამ დღეს. 25 00:01:17,470 --> 00:01:20,610 >> და ბოლოს, თქვენი პოსტი განყოფილებაში კავშირი, მე რეალურად 26 00:01:20,610 --> 00:01:23,000 მარცხენა დაახლოებით 15 წუთის განმავლობაში ბოლომდე უბრალოდ მეტი 27 00:01:23,000 --> 00:01:27,730 ლოგისტიკის pset3, რაიმე შეკითხვები, იქნებ ცოტა ხელმძღვანელობით, თუ გნებავთ, 28 00:01:27,730 --> 00:01:28,990 სანამ ჩვენ ვიწყებთ პროგრამირების. 29 00:01:28,990 --> 00:01:30,890 მოდით ცდილობენ მეშვეობით მასალა საკმაოდ სწრაფად. 30 00:01:30,890 --> 00:01:33,880 და მაშინ ჩვენ შეგვიძლია გარკვეული დრო გაატაროს აღების მეტი შეკითხვა pset. 31 00:01:33,880 --> 00:01:35,230 OK. 32 00:01:35,230 --> 00:01:39,570 >> სწრაფად, ასე რომ მხოლოდ რამდენიმე განცხადებები დაწყებამდე გააკეთა. 33 00:01:39,570 --> 00:01:45,410 პირველ რიგში, მივესალმები მიღების ეს ორი თქვენი psets. 34 00:01:45,410 --> 00:01:49,432 მე მივიღე შევხედოთ your-- ჰო, მოდით კიდევ ტაში, რომ ერთი. 35 00:01:49,432 --> 00:01:51,140 სინამდვილეში, მე ნამდვილად, ნამდვილად დიდი შთაბეჭდილება მოახდინა. 36 00:01:51,140 --> 00:01:55,800 მე ფასდება პირველი pset თქვენ ბიჭები გასულ კვირას და ბიჭები გააკეთა წარმოუდგენელი. 37 00:01:55,800 --> 00:01:58,290 >> სტილი იყო წერტილი გარდა ამისა, რამდენიმე კომენტარი. 38 00:01:58,290 --> 00:02:00,660 დარწმუნდით, რომ თქვენ ყოველთვის კომენტირებისას თქვენი კოდი. 39 00:02:00,660 --> 00:02:03,040 მაგრამ თქვენი psets იყო წერტილი. 40 00:02:03,040 --> 00:02:05,549 და შეინახოს იგი. 41 00:02:05,549 --> 00:02:08,090 და ეს კარგია კლასის მოსწავლე ვხედავთ, რომ თქვენ ბიჭები არიან აყენებს 42 00:02:08,090 --> 00:02:10,704 როგორც ბევრი ძალისხმევა თქვენი სტილი და თქვენი დიზაინი თქვენი კოდი 43 00:02:10,704 --> 00:02:12,120 რომ ჩვენ გვინდა, რომ თქვენ ხედავთ. 44 00:02:12,120 --> 00:02:16,450 ასე რომ, მე მიდიოდა გადავუხადო დანარჩენი ერთი TAs. 45 00:02:16,450 --> 00:02:19,210 >> თუმცა არსებობს რამდენიმე გამოკითხვა კითხვები 46 00:02:19,210 --> 00:02:22,010 მე უბრალოდ მინდა წასვლა, რომ გახდის როგორც ჩემი ცხოვრება 47 00:02:22,010 --> 00:02:24,900 და ბევრი სხვა ტასის "ცხოვრობს ცოტა ადვილია. 48 00:02:24,900 --> 00:02:28,220 პირველ რიგში, მე შენიშნა ეს ბოლო კვირის განმავლობაში, თუ რამდენი 49 00:02:28,220 --> 00:02:32,301 უკვე გაშვებული check50 on თქვენი კოდი, სანამ წარუდგინოს? 50 00:02:32,301 --> 00:02:32,800 OK. 51 00:02:32,800 --> 00:02:36,690 ასე რომ ყველას უნდა აკეთებს check50, იმიტომ საიდუმლო ჩვენ რეალურად 52 00:02:36,690 --> 00:02:41,540 აწარმოებს check50 როგორც ნაწილი ჩვენი სისწორის სკრიპტები ტესტირება თქვენი კოდი. 53 00:02:41,540 --> 00:02:45,480 ასე რომ, თუ თქვენი კოდი ვერ check50, ყველა ალბათობა, 54 00:02:45,480 --> 00:02:47,570 ეს, ალბათ, აპირებს ვერ ჩვენი შემოწმება, ასევე. 55 00:02:47,570 --> 00:02:49,320 ზოგჯერ თქვენ ბიჭები აქვს უფლება პასუხი. 56 00:02:49,320 --> 00:02:52,200 მსგავსად, ხარბ, ზოგიერთი თქვენ გაქვთ უფლება, ნომრები, 57 00:02:52,200 --> 00:02:53,960 თქვენ უბრალოდ ამობეჭდოთ გარკვეული დამატებითი პერსონალი. 58 00:02:53,960 --> 00:02:55,940 და რომ დამატებითი პერსონალი რეალურად ვერ შემოწმება, 59 00:02:55,940 --> 00:02:58,440 რადგან კომპიუტერი არ ნამდვილად ვიცი, რასაც ის ეძებს. 60 00:02:58,440 --> 00:03:00,981 ასე რომ, ეს უბრალოდ აწარმოებს მეშვეობით, ხედავთ, რომ თქვენი გამომავალი არ 61 00:03:00,981 --> 00:03:03,810 ემთხვევა, რაც ჩვენ ველით, რომ პასუხი უნდა იყოს, და აღსანიშნავად, რომ არასწორია. 62 00:03:03,810 --> 00:03:06,560 >> და მე ვიცი, რომ მოხდა ზოგიერთი თქვენი შემთხვევებში ამ კვირაში. 63 00:03:06,560 --> 00:03:09,870 ასე რომ, მე დავბრუნდი და ხელით regraded ყველას კოდი. 64 00:03:09,870 --> 00:03:12,780 მომავალში, თუმცა, გთხოვთ, დარწმუნდით 65 00:03:12,780 --> 00:03:14,570 რომ თქვენ გაშვებული შეამოწმეთ 50 თქვენი კოდი. 66 00:03:14,570 --> 00:03:17,970 იმიტომ, რომ ეს არის ერთგვარი ტკივილი TA უნდა დაბრუნდეს და ხელით regrade 67 00:03:17,970 --> 00:03:21,197 თითოეული pset ყველა ერთ, პატარა გაშვებული მაგალითად. 68 00:03:21,197 --> 00:03:22,530 ასე რომ, მე არ მიიღოს off ნებისმიერი რაოდენობა. 69 00:03:22,530 --> 00:03:25,210 მე ვფიქრობ, რომ აფრინდა, შესაძლოა, ერთი ან ორი დიზაინი. 70 00:03:25,210 --> 00:03:27,710 მომავალში, თუმცა, თუ თქვენ ვერ check50, 71 00:03:27,710 --> 00:03:31,330 რაოდენობა იქნება მიღებული დააგვირგვინა სისწორე. 72 00:03:31,330 --> 00:03:35,020 >> გარდა ამისა, psets არიან იმის გამო, პარასკევს შუადღისას. 73 00:03:35,020 --> 00:03:38,990 მე ვფიქრობ, რომ შვიდ-წუთიანი გვიან საშეღავათო პერიოდი, რომ ჩვენ გაძლევთ. 74 00:03:38,990 --> 00:03:42,434 პერ ჰარვარდის დროს, ისინი დაშვებული შვიდი წუთის დაგვიანებით ყველაფერი. 75 00:03:42,434 --> 00:03:44,350 ასე რომ, აქ იელის, ჩვენ ვიცავთ, რომ ისევე. 76 00:03:44,350 --> 00:03:47,910 მაგრამ საკმაოდ ბევრი, at 12:07, თუ თქვენი pset არ არის, 77 00:03:47,910 --> 00:03:49,720 ის აპირებს აღინიშნება, როგორც გვიან. 78 00:03:49,720 --> 00:03:53,160 ასე რომ, მიუხედავად იმისა, რომ აღინიშნება როგორც გვიან, TA-- ვარ 79 00:03:53,160 --> 00:03:54,870 ჯერ კიდევ უნდა შეფასების თქვენი psets. 80 00:03:54,870 --> 00:03:56,760 ასე, რომ თქვენ ჯერ კიდევ ვხედავთ grade გამოჩნდება. 81 00:03:56,760 --> 00:03:58,820 თუმცა, ვიცი, რომ ბოლოს სემესტრში, 82 00:03:58,820 --> 00:04:02,270 ყველა გვიან psets იქნება მხოლოდ ავტომატურად zeroed კომპიუტერი. 83 00:04:02,270 --> 00:04:04,490 >> ჩვენ ამას ვაკეთებთ, ორი მიზეზის გამო. 84 00:04:04,490 --> 00:04:09,220 ერთ-ერთი, ზოგჯერ მივიღებთ ბოდიში, როგორიცაა დეკანის excuses, 85 00:04:09,220 --> 00:04:10,762 მოგვიანებით, რომ მე არ ვიცი, არავის გაუკეთებია. 86 00:04:10,762 --> 00:04:13,761 ასე რომ, ჩვენ გვსურს დავრწმუნდეთ, რომ ჩვენ შეფასების ყველაფერი მხოლოდ იმ შემთხვევაში, მოსწონს, მე 87 00:04:13,761 --> 00:04:15,080 დაკარგული დეკანის საბაბი. 88 00:04:15,080 --> 00:04:17,000 და მეორე, შენარჩუნება გონება, თქვენ მაინც 89 00:04:17,000 --> 00:04:19,370 ჩამოაგდეს ერთი pset, რომ აქვს სრული ფარგლებს რაოდენობა. 90 00:04:19,370 --> 00:04:21,430 ასე რომ, ჩვენ გვსურს grade ყველა თქვენი psets მხოლოდ 91 00:04:21,430 --> 00:04:24,730 დარწმუნდით, რომ თქვენი ფარგლებს ს იქ და თქვენ ცდილობს მათ. 92 00:04:24,730 --> 00:04:29,150 ასე რომ, მაშინაც კი, თუ გვიან, თქვენ ჯერ კრედიტი ფარგლებს რაოდენობა, ვფიქრობ. 93 00:04:29,150 --> 00:04:33,730 >> ასე რომ, მორალური ამბავი, რომ დარწმუნებული ვარ, თქვენი psets არიან დროში. 94 00:04:33,730 --> 00:04:38,350 და თუ ისინი არ არიან დროში, ვიცი, რომ ეს არ არის დიდი. 95 00:04:38,350 --> 00:04:41,678 ჰო, სანამ გადავა, ვინმეს აქვს რაიმე შეკითხვები pset კავშირი? 96 00:04:41,678 --> 00:04:42,178 ჰო. 97 00:04:42,178 --> 00:04:43,630 >> აუდიტორია: ხომ არ ამბობენ, ჩვენ შეიძლება ვარდნა ერთ psets? 98 00:04:43,630 --> 00:04:44,296 >> Andi Peng: ჰო. 99 00:04:44,296 --> 00:04:47,050 ასე რომ, ცხრა psets საერთო მეტი კურსი სემესტრი. 100 00:04:47,050 --> 00:04:50,610 და თუ თქვენ გაქვთ ფარგლებში points-- ასე ფარგლებს უბრალოდ, 101 00:04:50,610 --> 00:04:53,567 საკმაოდ ბევრი, თქვენ ცდილობს პრობლემა, თქვენ აყენებს დროს, 102 00:04:53,567 --> 00:04:56,150 თქვენ აჩვენებს, რომ თქვენ აჩვენა თქვენ წაიკითხოთ სპეც. 103 00:04:56,150 --> 00:04:57,191 ეს არის საკმაოდ ბევრი ფარგლებს. 104 00:04:57,191 --> 00:04:59,370 და თუ თქვენ ასრულებს ფარგლებს რაოდენობა, 105 00:04:59,370 --> 00:05:03,360 შეიძლება ვარდნა ყველაზე დაბალი ყოველი სრულ სპექტრს. 106 00:05:03,360 --> 00:05:06,790 ასე რომ, თქვენი უპირატესობა დასრულებას და ცდილობენ ყოველ pset. 107 00:05:06,790 --> 00:05:10,320 >> მაშინაც კი, upload-- თუ არცერთი მათ მუშაობა, ატვირთეთ მათ ყველა. 108 00:05:10,320 --> 00:05:13,711 და მაშინ ჩვენ იმედია შეძლებს გადმოგცეთ ზოგიერთი იმ რაოდენობა უკან. 109 00:05:13,711 --> 00:05:14,210 ზემოთ. 110 00:05:14,210 --> 00:05:16,780 ნებისმიერი სხვა კითხვები? 111 00:05:16,780 --> 00:05:17,840 შესანიშნავი. 112 00:05:17,840 --> 00:05:21,960 >> მეორე, ოფისი საათთან რამდენიმე სწრაფი შენიშვნები შესახებ საათებში. 113 00:05:21,960 --> 00:05:24,300 ასე რომ, პირველი, მოდის, ადრე კვირაში. 114 00:05:24,300 --> 00:05:26,909 არავინ არ არის ოდესმე სამუშაო საათებში ორშაბათობით. 115 00:05:26,909 --> 00:05:28,700 Christabel მოვიდა სამუშაო საათებში ღამით. 116 00:05:28,700 --> 00:05:29,691 ჰო, Christabel. 117 00:05:29,691 --> 00:05:32,190 და რა გვაქვს ოფისი საათი ღამით, Christabel? 118 00:05:32,190 --> 00:05:33,020 >> აუდიტორია: ჩვენ გვქონდა ნაყინი. 119 00:05:33,020 --> 00:05:36,160 >> Andi Peng: ასე რომ უფლება, ჩვენ გვქონდა ნაყინის ოფისში საათი ღამით. 120 00:05:36,160 --> 00:05:39,390 მიუხედავად იმისა, რომ მე ვერ დაგპირდებით, რომ ჩვენ გვექნება ნაყინის ოფისში საათი 121 00:05:39,390 --> 00:05:43,230 ყოველ კვირას, რაც მე გპირდებით ის არის, რომ არ იქნება მნიშვნელოვნად 122 00:05:43,230 --> 00:05:45,380 უკეთესად რომ TA რაციონი. 123 00:05:45,380 --> 00:05:47,650 ისევე, როგორც ნათქვამია, ეს როგორც სამი ერთი. 124 00:05:47,650 --> 00:05:50,350 ამასთან, განსხვავებით, რომ ერთად ხუთშაბათი, თქვენ მოხვდით შესახებ 150 125 00:05:50,350 --> 00:05:52,830 ნამდვილად ხაზი გაუსვა, ბავშვები და ნაყინი. 126 00:05:52,830 --> 00:05:55,360 და ეს უბრალოდ არ არის პროდუქტიული ვინმეს. 127 00:05:55,360 --> 00:05:58,730 ასე რომ, მორალური ამბავი, მოდის დასაწყისში საათებში და კარგი რამ 128 00:05:58,730 --> 00:06:00,310 მოხდება. 129 00:06:00,310 --> 00:06:02,110 >> გარდა ამისა, მოვიდა მომზადებული შეკითხვები. 130 00:06:02,110 --> 00:06:03,200 თქვენ იცით? 131 00:06:03,200 --> 00:06:05,420 მიუხედავად იმისა, რა TAs, მე ვფიქრობ, უკვე განაცხადა, რომ, 132 00:06:05,420 --> 00:06:10,710 ჩვენ უკვე მიღების რამდენიმე სტუდენტები ვინც მოდის ხუთშაბათს, ისევე, 10:50 133 00:06:10,710 --> 00:06:15,100 არ წამიკითხავს სპეც დაემსგავსო დამეხმაროთ, დამეხმარება. 134 00:06:15,100 --> 00:06:18,200 სამწუხაროდ, იმ ეტაპზე, არ არსებობს დიდად არ შეგვიძლია გავაკეთოთ, რათა დაგეხმაროთ. 135 00:06:18,200 --> 00:06:19,590 ასე რომ გთხოვთ მოდის ადრე კვირაში. 136 00:06:19,590 --> 00:06:22,040 მოდი ადრეულ საათებში. 137 00:06:22,040 --> 00:06:23,350 მოვიდა მომზადებული შეკითხვები. 138 00:06:23,350 --> 00:06:25,310 დარწმუნდით, რომ თქვენ, როგორც სტუდენტი, სად 139 00:06:25,310 --> 00:06:27,620 თქვენ უნდა იყოს ისე, რომ TAs შეიძლება უხელმძღვანელებს თქვენ გასწვრივ, 140 00:06:27,620 --> 00:06:32,850 რაც ოფისში საათი უნდა იყოს გამოყოფილი. 141 00:06:32,850 --> 00:06:37,380 >> მეორე, მე ვიცი, პროფესორები მინდა გაოცება ტესტები. 142 00:06:37,380 --> 00:06:39,439 მე მქონდა პროფესორი იმ როგორიცაა, yo, სხვათა შორის, 143 00:06:39,439 --> 00:06:41,230 გვახსოვდეს, რომ შუალედური თქვენ გაქვთ მომავალი ორშაბათიდან. 144 00:06:41,230 --> 00:06:42,855 ჰო, მე არ ვიცი, რომ შუალედური. 145 00:06:42,855 --> 00:06:45,630 ამიტომ, მე ვაპირებ უნდა იყოს, რომ TA რომ შეგახსენებთ, რომ ყველა ინტელექტუალური 146 00:06:45,630 --> 00:06:47,270 0- იმიტომ, რომ თქვენ იცით, რომ ჩვენ CS. 147 00:06:47,270 --> 00:06:50,730 ახლა, რომ ჩვენ გავაკეთეთ კოლექტორები, თქვენ ამიტომ ეს ინტელექტუალური 0, არა ვიქტორინა 1, eh? 148 00:06:50,730 --> 00:06:51,320 OK. 149 00:06:51,320 --> 00:06:52,490 ოჰ, მე მივიღე რამდენიმე chuckles, რომ ერთი. 150 00:06:52,490 --> 00:06:53,120 OK. 151 00:06:53,120 --> 00:06:59,710 >> ასე რომ, ინტელექტუალური 0 იქნება 14 ოქტომბერს, თუ თქვენ ამ ორშაბათი-ოთხშაბათი განყოფილებაში 152 00:06:59,710 --> 00:07:02,920 და 15 ოქტომბერს, თუ თქვენ სამშაბათი-ხუთშაბათი განყოფილებაში. 153 00:07:02,920 --> 00:07:05,630 ეს არ ეხება იმ თქვენ, ჰარვარდის 154 00:07:05,630 --> 00:07:10,350 who-- მე ვფიქრობ, თქვენ ყველა იყოს აღების თქვენი ტესტებში მე -14. 155 00:07:10,350 --> 00:07:13,560 >> ასე რომ, yeah, მომავალ კვირას, თუ დავით, ლექცია, მიდის, 156 00:07:13,560 --> 00:07:15,747 ჰო, ისე, რომ ვიქტორინა მომავალ კვირას, თქვენ ყველა 157 00:07:15,747 --> 00:07:17,580 არ იქნება შოკირებულია, რადგან თქვენ მოვიდა განყოფილებაში 158 00:07:17,580 --> 00:07:19,664 და თქვენ იცით, რომ თქვენი ვიქტორინა 0 ორ კვირაში. 159 00:07:19,664 --> 00:07:21,580 და გვექნება მიმოხილვა სხდომებს და ყველაფერი. 160 00:07:21,580 --> 00:07:26,360 ასე რომ, არ აწუხებს მას ეშინია, რომ. 161 00:07:26,360 --> 00:07:29,890 ნებისმიერი კითხვები ადრე რაიმე შეკითხვები ყველა დაკავშირებით საორგანიზაციო საკითხები, 162 00:07:29,890 --> 00:07:32,591 შეფასების, საათებში, სექციები? 163 00:07:32,591 --> 00:07:33,090 ჰო. 164 00:07:33,090 --> 00:07:35,100 >> აუდიტორია: ასე ვიქტორინა არის იქნება დროს ლექციას? 165 00:07:35,100 --> 00:07:35,766 >> Andi Peng: ჰო. 166 00:07:35,766 --> 00:07:39,460 ასე რომ, ინტელექტუალური, მე ვფიქრობ, 60 წუთის გამოყოფილი, რომ დრო სლოტი 167 00:07:39,460 --> 00:07:42,240 ის, რომ თქვენ უბრალოდ მიიღოს აუდიტორია. 168 00:07:42,240 --> 00:07:44,810 ასე რომ თქვენ არ უნდა მოვიდეს შესახებ, როგორიცაა, შემთხვევითი 7:00 PM. 169 00:07:44,810 --> 00:07:46,140 ეს ყველაფერი კარგი. 170 00:07:46,140 --> 00:07:47,100 ჰო. 171 00:07:47,100 --> 00:07:50,060 ზემოთ. 172 00:07:50,060 --> 00:07:50,840 >> ყველა უფლება. 173 00:07:50,840 --> 00:07:54,330 ასე რომ, ჩვენ ვაპირებთ დანერგვა კონცეფცია თქვენ 174 00:07:54,330 --> 00:08:00,760 ამ კვირაში, რომ დავით უკვე სახის საქართველოს შეეხო ლექცია გასულ კვირას. 175 00:08:00,760 --> 00:08:02,010 ეს ე.წ. GDB. 176 00:08:02,010 --> 00:08:05,570 და რამდენი, ხოლო რა თქმა უნდა, წერილობით თქვენი psets, 177 00:08:05,570 --> 00:08:09,981 არ შენიშნა დიდი ღილაკს, რომელიც ამბობს "გამართვის" ზედა თქვენი IDE? 178 00:08:09,981 --> 00:08:10,480 OK. 179 00:08:10,480 --> 00:08:13,770 ასე რომ, ახლა ჩვენ რეალურად მიიღონ, ჩასწვდეს საიდუმლო რა ღილაკს რომ რეალურად 180 00:08:13,770 --> 00:08:14,270 აკეთებს. 181 00:08:14,270 --> 00:08:16,790 და მე გაძლევთ გარანტიას, რომ ეს არის ლამაზი, ლამაზი რამ. 182 00:08:16,790 --> 00:08:20,740 >> ასე რომ, დღემდე, მე ვფიქრობ, იქ იყო ორი რამ 183 00:08:20,740 --> 00:08:23,320 სტუდენტები არ ყოფილა, როგორც წესი, აკეთებს, როდესაც გამართვის psets. 184 00:08:23,320 --> 00:08:27,635 ერთ-ერთი, ისინი ან დაამატოთ printf () - ასე რომ, ყოველ რამდენიმე ხაზები, 185 00:08:27,635 --> 00:08:29,760 ისინი დაამატოთ printf () - აი, რა არის ეს ცვლადი? 186 00:08:29,760 --> 00:08:32,551 აი, რა არის ეს ცვლადი, ახლა და თქვენ სახის ვხედავ პროგრესიით 187 00:08:32,551 --> 00:08:33,940 თქვენი კოდი როგორც მართავს. 188 00:08:33,940 --> 00:08:37,030 ან მეორე მეთოდი ბავშვებს არის რომ ისინი უბრალოდ წერენ მთელი რამ 189 00:08:37,030 --> 00:08:38,610 და მერე, როგორც ეს ბოლოს. 190 00:08:38,610 --> 00:08:39,970 იმედია მუშაობს. 191 00:08:39,970 --> 00:08:44,851 მე გაძლევთ გარანტიას, GDB უკეთესია ვიდრე ორივე იმ მეთოდებს. 192 00:08:44,851 --> 00:08:45,350 ჰო. 193 00:08:45,350 --> 00:08:46,980 ასე რომ, ეს იქნება თქვენი ახალი საუკეთესო მეგობარი. 194 00:08:46,980 --> 00:08:51,780 იმიტომ, რომ ეს ლამაზი რამ, რომ ვიზუალურად აჩვენებს ორივე 195 00:08:51,780 --> 00:08:54,850 რა თქვენი კოდი აკეთებს აქვს კონკრეტული წერტილი 196 00:08:54,850 --> 00:08:57,486 ისევე, როგორც ის, რაც ყველა თქვენი ცვლადების ტარების, 197 00:08:57,486 --> 00:08:59,610 მსგავსი იმისა, რაც მათი ღირებულებები, იმ კონკრეტული წერტილი. 198 00:08:59,610 --> 00:09:02,670 და ამ გზით, თქვენ ნამდვილად მითითებული breakpoints თქვენს კოდი. 199 00:09:02,670 --> 00:09:04,350 თქვენ შეგიძლიათ აწარმოებს მეშვეობით ხაზს. 200 00:09:04,350 --> 00:09:07,324 და GDB უბრალოდ უნდა for თქვენ, ნაჩვენები თქვენ, 201 00:09:07,324 --> 00:09:09,490 რა ყველა თქვენი ცვლადები არიან, რას აკეთებენ, 202 00:09:09,490 --> 00:09:10,656 რა ხდება კოდი. 203 00:09:10,656 --> 00:09:13,240 და ასეთ შემთხვევაში, ეს იმდენად უფრო ადვილია, 204 00:09:13,240 --> 00:09:17,120 რა ხდება ნაცვლად printf-ing ან წერილობით ქვემოთ თქვენი განცხადებები. 205 00:09:17,120 --> 00:09:19,160 >> ასე რომ, ჩვენ ყველაფერს გავაკეთებთ მაგალითია შემდეგ. 206 00:09:19,160 --> 00:09:20,660 ასე რომ, ეს, როგორც ჩანს, ცოტა აბსტრაქტული. 207 00:09:20,660 --> 00:09:23,490 არ აწუხებს, ჩვენ ყველაფერს გავაკეთებთ მაგალითები. 208 00:09:23,490 --> 00:09:29,170 ასე რომ, არსებითად, სამი უდიდესი, ყველაზე გამოიყენება ფუნქცია დაგჭირდებათ GDB 209 00:09:29,170 --> 00:09:32,500 არის შემდეგი, ჩამოდი, და ნაბიჯი შევიდა ღილაკებით. 210 00:09:32,500 --> 00:09:34,860 მე ვაპირებ უხელმძღვანელებს გადასცა არსებობს, ფაქტობრივად, ახლა. 211 00:09:34,860 --> 00:09:40,930 >> ასე რომ, შეგიძლიათ ბიჭები ყველა ვხედავთ, რომ ან უნდა ზომით ცოტა? 212 00:09:40,930 --> 00:09:43,220 213 00:09:43,220 --> 00:09:44,470 უკან, ხედავთ, რომ? 214 00:09:44,470 --> 00:09:45,730 თუ ზომით? 215 00:09:45,730 --> 00:09:46,480 უბრალოდ ცოტა? 216 00:09:46,480 --> 00:09:49,390 OK, მაგარი. 217 00:09:49,390 --> 00:09:50,280 იქ ჩვენ წავიდეთ. 218 00:09:50,280 --> 00:09:50,960 OK. 219 00:09:50,960 --> 00:09:57,000 >> ასე რომ, მე, აქ, ჩემი განხორციელების ხარბ. 220 00:09:57,000 --> 00:10:01,430 მიუხედავად იმისა, რომ ბევრი თქვენგანი ბიჭები დაწერა ხარბ ხოლო loop form--, რომ 221 00:10:01,430 --> 00:10:04,890 არის იდეალურად მისაღები გზა უნდა გააკეთოს, it-- სხვა გზა ამის გაკეთება, უბრალოდ, 222 00:10:04,890 --> 00:10:06,280 გათიშე modulo. 223 00:10:06,280 --> 00:10:09,290 იმის გამო, რომ მაშინ შეგიძლიათ თქვენი ღირებულება და შემდეგ თქვენი დარჩენილი. 224 00:10:09,290 --> 00:10:11,150 და მაშინ თქვენ შეგიძლიათ უბრალოდ რჩეულებში ყველა ერთად. 225 00:10:11,150 --> 00:10:13,390 არა ლოგიკა, რასაც მე ვაკეთებ აქ აზრი, რომ ყველასთვის, 226 00:10:13,390 --> 00:10:14,117 სანამ ჩვენ ვიწყებთ? 227 00:10:14,117 --> 00:10:16,760 228 00:10:16,760 --> 00:10:17,980 სახის? 229 00:10:17,980 --> 00:10:18,710 ზემოთ. 230 00:10:18,710 --> 00:10:19,210 შესანიშნავი. 231 00:10:19,210 --> 00:10:21,290 ეს არის საკმაოდ sexy ცალი კოდი, მე ვიტყოდი. 232 00:10:21,290 --> 00:10:23,502 როგორც ვთქვი, დავით, ლექცია, შემდეგ კი, 233 00:10:23,502 --> 00:10:25,960 თქვენ ყველა დაიწყება ვხედავთ კოდი როგორც, რომ რაღაც ლამაზი. 234 00:10:25,960 --> 00:10:29,950 და ზოგჯერ, როდესაც ხედავთ ლამაზი კოდი, რომ ასეთი მშვენიერი განცდა. 235 00:10:29,950 --> 00:10:35,410 >> ასე რომ, თუმცა, მიუხედავად იმისა, რომ ეს კოდი არის ძალიან ლამაზი, ეს არ იმუშავებს. 236 00:10:35,410 --> 00:10:37,750 მოდით აწარმოებს check50 ამ. 237 00:10:37,750 --> 00:10:39,440 შეამოწმეთ 50 20-- oop. 238 00:10:39,440 --> 00:10:43,221 239 00:10:43,221 --> 00:10:43,720 2? 240 00:10:43,720 --> 00:10:44,990 ის არის, რომ pset2? 241 00:10:44,990 --> 00:10:46,870 ჰო. 242 00:10:46,870 --> 00:10:47,520 ოჰ, pset1. 243 00:10:47,520 --> 00:10:50,970 244 00:10:50,970 --> 00:10:52,890 OK. 245 00:10:52,890 --> 00:10:53,900 ასე რომ, ჩვენ აწარმოებს check50. 246 00:10:53,900 --> 00:11:01,550 247 00:11:01,550 --> 00:11:07,170 >> და როგორც თქვენ ბიჭებს აქ, ეს ვერ შესძლო რამდენიმე შემთხვევა. 248 00:11:07,170 --> 00:11:10,165 ხოლო ზოგიერთი თქვენ, რა თქმა უნდა, ამით თქვენი პრობლემა კომპლექტი, 249 00:11:10,165 --> 00:11:11,110 თქვენ, როგორიცაა, ah, რატომ არ არის ეს სამუშაო. 250 00:11:11,110 --> 00:11:13,318 რატომ არის სამუშაო ზოგიერთი ღირებულებები, მაგრამ არა სხვები? 251 00:11:13,318 --> 00:11:17,760 ისე, GDB აპირებს დაგეხმარებათ ფიგურა გაირკვეს, რატომ იმ საშუალებებით არ მუშაობს. 252 00:11:17,760 --> 00:11:18,320 >> OK. 253 00:11:18,320 --> 00:11:21,640 ასე რომ, ვნახოთ, ერთ-ერთი ამოწმებს მე ვერ check50 254 00:11:21,640 --> 00:11:24,920 იყო შეყვანილი ღირებულება 0.41. 255 00:11:24,920 --> 00:11:27,830 ასე რომ, სწორი პასუხი, რომ თქვენ უნდა მისაღებად არის 4. 256 00:11:27,830 --> 00:11:33,090 არამედ ის, რასაც მე დაბეჭდვისას არის 3-n, რაც არასწორია. 257 00:11:33,090 --> 00:11:36,190 მოდით უბრალოდ გაუშვით ეს ხელით, ისევე დარწმუნდით, რომ check50 მუშაობს. 258 00:11:36,190 --> 00:11:36,940 მოდით გავაკეთოთ ./greedy. 259 00:11:36,940 --> 00:11:40,130 260 00:11:40,130 --> 00:11:43,340 Oops, I უნდა მიიღოს ხარბ. 261 00:11:43,340 --> 00:11:43,840 იქ ჩვენ წავიდეთ. 262 00:11:43,840 --> 00:11:44,381 ახლა ./greedy. 263 00:11:44,381 --> 00:11:46,950 264 00:11:46,950 --> 00:11:47,670 >> რამდენად კუთვნილს? 265 00:11:47,670 --> 00:11:49,550 მოდით გავაკეთოთ 0.41. 266 00:11:49,550 --> 00:11:52,590 და yep, ჩვენ ვხედავთ აქ რომ ის outputting 3 267 00:11:52,590 --> 00:11:55,160 როდესაც სწორი პასუხი, ფაქტობრივად, უნდა იყოს 4. 268 00:11:55,160 --> 00:12:01,460 ასე რომ, მოდით შეიყვანოთ GDB და ვნახოთ, როგორ შეიძლება წავიდეთ შესახებ აფიქსირებს ამ პრობლემას. 269 00:12:01,460 --> 00:12:03,992 >> ასე რომ, პირველი ნაბიჯი ყოველთვის debugging თქვენი კოდი 270 00:12:03,992 --> 00:12:05,950 არის მითითებული breakpoint, ან პუნქტი, რომელიც თქვენ 271 00:12:05,950 --> 00:12:09,079 მინდა კომპიუტერი ან debugger დაიწყოს ეძებს. 272 00:12:09,079 --> 00:12:11,120 ასე რომ, თუ თქვენ ნამდვილად არ იცით, რა თქვენი პრობლემა ის არის, 273 00:12:11,120 --> 00:12:14,670 როგორც წესი, ტიპიური, რაც ჩვენ გვინდა გავაკეთოთ არის მითითებული ჩვენი breakpoint დროს ძირითადი. 274 00:12:14,670 --> 00:12:18,520 ასე რომ, თუ ბიჭები ვხედავთ ამ წითელ ღილაკს უფლება არსებობს, 275 00:12:18,520 --> 00:12:22,860 yep, რომელიც ჩემთვის შექმნის breakpoint ძირითადი ფუნქცია. 276 00:12:22,860 --> 00:12:24,130 მე დააჭირეთ რომ. 277 00:12:24,130 --> 00:12:26,130 >> და მერე შეიძლება ახვიდეთ ჩემი Debug ღილაკს. 278 00:12:26,130 --> 00:12:27,036 მე მოხვდა, რომ ღილაკს. 279 00:12:27,036 --> 00:12:31,710 280 00:12:31,710 --> 00:12:36,555 ნება მომეცით zoom უკან, თუ არ შემიძლია. 281 00:12:36,555 --> 00:12:38,020 იქ ჩვენ წავიდეთ. 282 00:12:38,020 --> 00:12:40,730 ასე რომ, ჩვენ, აქ, პანელის მარჯვენა. 283 00:12:40,730 --> 00:12:43,680 მე ბოდიში, ბიჭები უკან, თქვენ ვერ ვხედავ ნამდვილად კარგად. 284 00:12:43,680 --> 00:12:49,090 მაგრამ არსებითად, ყველა ეს უფლება პანელი აკეთებს 285 00:12:49,090 --> 00:12:53,130 შენახვა ტრეკზე როგორც მონიშნულია ხაზი, რომელიც არის ხაზი კოდი 286 00:12:53,130 --> 00:12:56,640 რომ კომპიუტერი მოქმედი, ისევე როგორც ყველა თქვენი ცვლადები 287 00:12:56,640 --> 00:12:57,600 ქვემოთ აქ. 288 00:12:57,600 --> 00:13:00,487 >> ასე, რომ თქვენ მოხვდით ცენტი, მონეტები, n, ყველა განაცხადა, რომ სხვადასხვა რამ 289 00:13:00,487 --> 00:13:01,070 ამ ეტაპზე. 290 00:13:01,070 --> 00:13:04,850 არ აწუხებს, იმიტომ, რომ ჩვენ არ რეალურად ინიციალიზაცია მათ ნებისმიერ ცვლადები ამჟამად. 291 00:13:04,850 --> 00:13:07,200 ასე რომ, თქვენს კომპიუტერში, თქვენი კომპიუტერული უბრალოდ ხედავს, 292 00:13:07,200 --> 00:13:14,376 oh, 32767 იყო გამოყენებული ბოლოს ფუნქცია რომ მეხსიერების სივრცე ჩემს კომპიუტერში. 293 00:13:14,376 --> 00:13:16,000 და ასე რომ, სადაც ცენტი ამჟამად. 294 00:13:16,000 --> 00:13:19,360 მაგრამ არ არის, რომ ერთხელ თქვენ აწარმოებს კოდი, ეს უნდა გახდეს initialized. 295 00:13:19,360 --> 00:13:24,110 >> მოდით გავლა, ხაზი ხაზი, თუ რა ხდება აქ. 296 00:13:24,110 --> 00:13:25,350 OK. 297 00:13:25,350 --> 00:13:29,400 ასე რომ, აქ არის სამი ღილაკები, რომ მე უბრალოდ განმარტა. 298 00:13:29,400 --> 00:13:34,090 თქვენ გაქვთ თამაში, ან Run ფუნქცია, ღილაკს, თქვენ გაქვთ ნაბიჯი მეტი ღილაკს, 299 00:13:34,090 --> 00:13:36,600 და თქვენ ასევე აქვს ნაბიჯი შევიდა ღილაკს. 300 00:13:36,600 --> 00:13:41,260 და არსებითად, სამივე მათ უბრალოდ გავლა თქვენი კოდი 301 00:13:41,260 --> 00:13:42,690 და სხვადასხვა რამ. 302 00:13:42,690 --> 00:13:45,680 >> ასე რომ, როგორც წესი, როცა თქვენ გამართვის, ჩვენ არ გვინდა, რომ უბრალოდ მოხვდა თამაში, 303 00:13:45,680 --> 00:13:47,930 იმიტომ, რომ თამაში იქნება მხოლოდ აწარმოებს თქვენი კოდი ბოლომდე იგი. 304 00:13:47,930 --> 00:13:49,070 და მაშინ, ფაქტობრივად, არ იცით, რა თქვენი პრობლემა 305 00:13:49,070 --> 00:13:51,432 თუ არ შეიქმნა მრავალი breakpoints. 306 00:13:51,432 --> 00:13:53,890 თუ თქვენ მითითებული მრავალჯერადი breakpoints, ეს იქნება მხოლოდ ავტომატურად 307 00:13:53,890 --> 00:13:56,030 აწარმოებს ერთი breakpoint, შემდეგი, მომდევნო. 308 00:13:56,030 --> 00:13:58,030 მაგრამ ამ შემთხვევაში ჩვენ მხოლოდ ის, რომ ერთი, იმიტომ, რომ ჩვენ 309 00:13:58,030 --> 00:13:59,970 მინდა მუშაობა ჩვენი გზა ზემოდან ქვემოთ ბოლოში. 310 00:13:59,970 --> 00:14:04,830 ამიტომ, ჩვენ ვაპირებთ იგნორირება, რომ ღილაკს ახლავე მიზნით ამ პროგრამის. 311 00:14:04,830 --> 00:14:08,230 >> ასე რომ, ნაბიჯი მეტი ფუნქცია მხოლოდ ნაბიჯები მეტი თითოეული ხაზი 312 00:14:08,230 --> 00:14:11,510 და ეუბნება, თუ რა კომპიუტერი აკეთებს. 313 00:14:11,510 --> 00:14:14,630 ნაბიჯი შევიდა ფუნქცია მიდის შევიდა ფაქტობრივი ფუნქცია 314 00:14:14,630 --> 00:14:16,000 რომ არის თქვენი ხაზი კოდი. 315 00:14:16,000 --> 00:14:19,070 ასე მაგალითად, როგორიცაა printf (), რომ არის ფუნქცია, არა? 316 00:14:19,070 --> 00:14:21,980 თუ მინდოდა ფიზიკურად ნაბიჯი შევიდა printf () ფუნქცია, 317 00:14:21,980 --> 00:14:25,610 მე რეალურად წასვლას ნაჭერი კოდი, სადაც printf () დაიწერა და ვნახოთ 318 00:14:25,610 --> 00:14:26,730 რა ხდება იქ. 319 00:14:26,730 --> 00:14:29,924 >> მაგრამ, როგორც წესი, ვივარაუდოთ, რომ კოდი, რომელიც ჩვენ გაძლევთ მუშაობს. 320 00:14:29,924 --> 00:14:31,340 ჩვენ ვივარაუდოთ printf () მუშაობს. 321 00:14:31,340 --> 00:14:33,170 უნდა ვივარაუდოთ, რომ GetInt () მუშაობს. 322 00:14:33,170 --> 00:14:35,170 ასე რომ, არ არის საჭირო ნაბიჯ შევიდა იმ ფუნქციებს. 323 00:14:35,170 --> 00:14:37,170 მაგრამ თუ ფუნქცია რომ წერთ თავს 324 00:14:37,170 --> 00:14:39,060 რომ გსურთ შემოწმება გაირკვეს, თუ რა ხდება, 325 00:14:39,060 --> 00:14:41,200 თქვენ სურს გადადგას რომ ფუნქცია. 326 00:14:41,200 --> 00:14:43,940 >> ასე რომ, ახლა ჩვენ უბრალოდ აპირებს გადადგას მეტი ეს კოდი. 327 00:14:43,940 --> 00:14:44,485 ასე რომ, ვნახოთ. 328 00:14:44,485 --> 00:14:46,547 ოჰ, ბეჭდვითი, "Oh hai, როგორ ბევრი ცვლილება კუთვნილს? " 329 00:14:46,547 --> 00:14:47,130 ჩვენ არ მაინტერესებს. 330 00:14:47,130 --> 00:14:49,830 ჩვენ ვიცით, რომ ის მუშაობს, ასე რომ, ჩვენ ნაბიჯ მას. 331 00:14:49,830 --> 00:14:53,290 >> ასე რომ, ო, რომელიც ჩვენი float, რომ ჩვენ initialized-- ან declared-- 332 00:14:53,290 --> 00:14:56,810 ზედა, ჩვენ ახლა რითაც, რომ GetFloat (). 333 00:14:56,810 --> 00:14:57,810 მოდით ნაბიჯი მეტი რომ. 334 00:14:57,810 --> 00:14:59,580 და ვხედავთ, ქვედა აქ, პროგრამა 335 00:14:59,580 --> 00:15:03,360 რითაც ჩემთვის შეყვანის მნიშვნელობა. 336 00:15:03,360 --> 00:15:08,580 მოდით შეყვანის ღირებულება გვინდა, შესამოწმებლად აქ, რომელიც არის 0.41. 337 00:15:08,580 --> 00:15:09,160 შესანიშნავი. 338 00:15:09,160 --> 00:15:12,780 >> ასე რომ, ახლა N-- თქვენ ბიჭები ვხედავ აქ, bottom-- ეს 339 00:15:12,780 --> 00:15:15,140 stored-- იმიტომ, რომ ჩვენ არ მრგვალდება არ არის, ეს 340 00:15:15,140 --> 00:15:19,540 ინახება ამ, როგორიცაა გიგანტური float, რომელიც 0,4099999996, 341 00:15:19,540 --> 00:15:22,550 რომელიც ახლოს არის საკმარისი იმისათვის, რომ ჩვენი მიზნებისათვის, ახლა, რომ 0.41. 342 00:15:22,550 --> 00:15:26,090 და მაშინ ვნახავთ, მოგვიანებით, როგორც ჩვენ გაგრძელდება სტეპინგზე მეტი პროგრამა, 343 00:15:26,090 --> 00:15:29,850 მას შემდეგ, რაც აქ, n გახდა მომრგვალებული და ცენტი გახდა 41. 344 00:15:29,850 --> 00:15:30,350 შესანიშნავი. 345 00:15:30,350 --> 00:15:32,230 ასე რომ, ჩვენ ვიცით, რომ ჩვენი დამრგვალება სამუშაო. 346 00:15:32,230 --> 00:15:34,700 ჩვენ ვიცით, რომ ჩვენ გვაქვს სწორი რაოდენობის ცენტი, 347 00:15:34,700 --> 00:15:36,990 ასე რომ, ჩვენ ვიცით, რომ ეს ნამდვილად არ არის პრობლემა. 348 00:15:36,990 --> 00:15:40,050 >> ჩვენ გავაგრძელებთ სტეპინგზე მე ამ პროგრამაში. 349 00:15:40,050 --> 00:15:40,900 ჩვენ აქ. 350 00:15:40,900 --> 00:15:46,139 და ასე შემდეგ, ეს ხაზი კოდი, ჩვენ უნდა იცოდეს, რამდენი მეოთხედი გვაქვს. 351 00:15:46,139 --> 00:15:46,680 ჩვენ გადადგას მეტი. 352 00:15:46,680 --> 00:15:52,040 თქვენ ხედავთ, რომ ჩვენ, ფაქტობრივად, აქვს ერთი კვარტალში, რადგან ჩვენ ვაკლებდით 25 353 00:15:52,040 --> 00:15:53,790 ჩვენი თავდაპირველი ღირებულება 41. 354 00:15:53,790 --> 00:15:55,890 და ჩვენ გვაქვს 16 მარცხენა ჩვენი ცენტი. 355 00:15:55,890 --> 00:15:58,830 >> ამჯამად ყველას გვესმის, თუ როგორ პროგრამა სტეპინგზე მეშვეობით 356 00:15:58,830 --> 00:16:02,980 და რატომ ცენტი გახდა 16 და ამიტომ, ახლა, მონეტები გახდა 1? 357 00:16:02,980 --> 00:16:04,610 ყველას შემდეგ, რომ ლოგიკა? 358 00:16:04,610 --> 00:16:05,110 ზემოთ. 359 00:16:05,110 --> 00:16:07,860 ასე რომ, როგორც ამ ეტაპზე, პროგრამის სამუშაო, არა? 360 00:16:07,860 --> 00:16:09,797 ჩვენ ვიცით, ის აკეთებს ზუსტად ის, რაც ჩვენ გვინდა, რომ ეს. 361 00:16:09,797 --> 00:16:11,880 ჩვენ პრაქტიკულად არ უნდა ამობეჭდოთ, oh, რა 362 00:16:11,880 --> 00:16:14,430 არის ცენტი, ამ ეტაპზე, რა არის მონეტები ამ ეტაპზე. 363 00:16:14,430 --> 00:16:17,170 >> ჩვენ ვაგრძელებთ მეშვეობით პროგრამა. 364 00:16:17,170 --> 00:16:18,100 ჩამოდი. 365 00:16:18,100 --> 00:16:18,620 ზემოთ. 366 00:16:18,620 --> 00:16:19,700 ჩვენ წავიდეთ მეტი dimes. 367 00:16:19,700 --> 00:16:20,200 შესანიშნავი. 368 00:16:20,200 --> 00:16:22,367 ჩვენ ვხედავთ, რომ ის მიღებული off $ 0.10 dime. 369 00:16:22,367 --> 00:16:23,450 და ახლა ჩვენ გვაქვს ორი მონეტა. 370 00:16:23,450 --> 00:16:25,260 ეს არის სწორი. 371 00:16:25,260 --> 00:16:31,555 >> ჩვენ წავიდეთ მეტი pennies და ჩვენ ვხედავთ, რომ ჩვენ მივიღეთ დარჩა ცენტი. 372 00:16:31,555 --> 00:16:32,680 Hmm, რომ უცნაურია. 373 00:16:32,680 --> 00:16:37,540 Up აქ პროგრამა, მე უნდა არ აკლდება ჩემი pennies. 374 00:16:37,540 --> 00:16:39,400 ალბათ მე უბრალოდ არ იყო აკეთებს, რომ ხაზი. 375 00:16:39,400 --> 00:16:42,190 და ვაი, თქვენ ხედავთ, აქ, რადგან ჩვენ ვიცით, 376 00:16:42,190 --> 00:16:44,360 რომ ჩვენ სტეპინგზე მეშვეობით ხაზები 32 და 33, 377 00:16:44,360 --> 00:16:50,560 ეს არის ის, სადაც ჩვენი პროგრამა არასწორად ჰქონდა ცვლადები აწარმოებს. 378 00:16:50,560 --> 00:16:55,136 ასე რომ, ჩვენ შეგვიძლია შევხედოთ და ვნახოთ, რა, მე გამოკლება ცენტი აქ, 379 00:16:55,136 --> 00:16:57,010 მაგრამ მე არ ვარ რეალურად და დასძინა, რომ ჩემი მონეტა ღირებულება. 380 00:16:57,010 --> 00:16:57,860 მე დასძინა ცენტი. 381 00:16:57,860 --> 00:17:00,234 და მე არ მინდა, რომ რჩეულებში ცენტი, მინდა ვთქვა, რომ მონეტები. 382 00:17:00,234 --> 00:17:05,420 ასე რომ, თუ შევცვლით, რომ მონეტები, ჩვენ მივიღეთ სამუშაო პროგრამა. 383 00:17:05,420 --> 00:17:06,730 შემიძლია აწარმოებს check50. 384 00:17:06,730 --> 00:17:11,063 შეგიძლიათ უბრალოდ გაითიშება GDB უფლება აქ და შემდეგ აწარმოებს check50 ერთხელ. 385 00:17:11,063 --> 00:17:11,938 მე შეიძლება მხოლოდ ამის გაკეთება. 386 00:17:11,938 --> 00:17:14,822 387 00:17:14,822 --> 00:17:18,480 მე უნდა მიიღოს ხარბ. 388 00:17:18,480 --> 00:17:19,940 0.41. 389 00:17:19,940 --> 00:17:22,819 და აქ, ეს არის ბეჭდვის out სწორი პასუხი. 390 00:17:22,819 --> 00:17:26,569 >> ასე რომ, როგორც თქვენ ბიჭები ხედავთ, GDB არის ძალიან ძლიერი ინსტრუმენტი 391 00:17:26,569 --> 00:17:29,940 როდესაც ჩვენ გვაქვს იმდენად კოდი მიმდინარეობს და ამდენი ცვლადები 392 00:17:29,940 --> 00:17:32,510 რომ რთულია ჩვენთვის, ადამიანის, შენარჩუნება სიმღერა. 393 00:17:32,510 --> 00:17:35,360 კომპიუტერული, ამ GDB debugger, აქვს უნარი 394 00:17:35,360 --> 00:17:37,020 შენარჩუნება სიმღერა ყველაფერი. 395 00:17:37,020 --> 00:17:40,480 ვიცი, Visionaire, თქვენ ბიჭები ალბათ შეიძლება არ მოხვდა რამდენიმე სეგმენტაცია ხარვეზებით 396 00:17:40,480 --> 00:17:43,150 იმიტომ, რომ თქვენ გაშვებული ფარგლებს გარეთ თქვენი მასივი. 397 00:17:43,150 --> 00:17:46,510 მაგალითში კეისრის, რომ ზუსტად ის, რაც მე ხორციელდება აქ. 398 00:17:46,510 --> 00:17:50,060 >> ასე რომ დამავიწყდა შემოწმება რა მოხდება, თუ მე 399 00:17:50,060 --> 00:17:52,510 არ აქვს ორი ბრძანება ხაზი არგუმენტები. 400 00:17:52,510 --> 00:17:53,880 მე უბრალოდ არ დააყენა, რომ ქვითარი. 401 00:17:53,880 --> 00:17:57,380 ასე რომ, თუ მე აწარმოებს Debug-- I მითითებული ჩემი breakpoint უფლება არსებობს. 402 00:17:57,380 --> 00:17:58,055 მე აწარმოებს Debug. 403 00:17:58,055 --> 00:18:15,880 404 00:18:15,880 --> 00:18:16,550 >> OK. 405 00:18:16,550 --> 00:18:17,050 ჰო. 406 00:18:17,050 --> 00:18:20,350 ასე რომ, რეალურად, GDB მოსალოდნელი იყო არ მითხრა, 407 00:18:20,350 --> 00:18:22,300 იყო სეგმენტაცია ბრალია არსებობს. 408 00:18:22,300 --> 00:18:24,883 მე არ ვიცი, რა ხდებოდა უფლება არსებობს, მაგრამ როცა გაიქცა, 409 00:18:24,883 --> 00:18:25,590 იგი მუშაობდა. 410 00:18:25,590 --> 00:18:29,410 როდესაც თქვენ აწარმოებს ხაზების კოდი მეშვეობით და GDB შეიძლება მხოლოდ მოულოდნელად დატოვა თქვენ, 411 00:18:29,410 --> 00:18:31,540 უფროსი და შევხედოთ რა წითელი შეცდომა. 412 00:18:31,540 --> 00:18:33,930 ეს გეტყვით, Hey, თქვენ ჰქონდა სეგმენტაცია ბრალია, 413 00:18:33,930 --> 00:18:38,550 რაც იმას ნიშნავს, რომ თქვენ ცდილობდა ხელმისაწვდომობა ფართი მასივი, რომ არ არსებობდა. 414 00:18:38,550 --> 00:18:39,050 ჰო. 415 00:18:39,050 --> 00:18:43,280 >> ასე რომ, მომდევნო პრობლემა მითითებული ამ კვირაში, თქვენ ბიჭები 416 00:18:43,280 --> 00:18:45,600 ალბათ ბევრი ცვლადები მცურავი გარშემო. 417 00:18:45,600 --> 00:18:48,560 თქვენ არ იქნება დარწმუნებული, თუ რა ისინი ნიშნავს გარკვეულ ეტაპზე. 418 00:18:48,560 --> 00:18:53,560 ასე რომ, GDB ნამდვილად დაგეხმარებათ მჭიდროდაა გაირკვეს, თუ რა ისინი ყველა გაუთანაბრდა 419 00:18:53,560 --> 00:18:55,940 და რომ ნახოს, რომ ვიზუალურად. 420 00:18:55,940 --> 00:19:01,995 არის ვინმე დაბნეული, თუ როგორ რომელიმე რომ მუშაობდა? 421 00:19:01,995 --> 00:19:02,495 ზემოთ. 422 00:19:02,495 --> 00:19:10,121 423 00:19:10,121 --> 00:19:10,620 ყველა უფლება. 424 00:19:10,620 --> 00:19:14,260 ასე რომ, მას შემდეგ, რაც, ჩვენ ვართ ვაპირებთ ჩაყვინთვის მარჯვენა 425 00:19:14,260 --> 00:19:17,562 შევიდა ოთხი სხვადასხვა სახის ჯიშები ამ კვირაში. 426 00:19:17,562 --> 00:19:19,520 რამდენი თქვენგანი, პირველი ყოვლისა, სანამ ჩვენ ვიწყებთ, 427 00:19:19,520 --> 00:19:23,020 წავიკითხე მთელი სპეც pset3? 428 00:19:23,020 --> 00:19:23,824 OK. 429 00:19:23,824 --> 00:19:24,740 მე ამაყი ვარ, თქვენ ბიჭები. 430 00:19:24,740 --> 00:19:29,110 სწორედ ისევე, როგორც ნახევარი კლასი, რომელიც გაცილებით მეტია, ვიდრე ბოლო დროს. 431 00:19:29,110 --> 00:19:33,950 >> ასე რომ, დიდი, რადგან, როდესაც ჩვენ ვსაუბრობთ შინაარსი 432 00:19:33,950 --> 00:19:36,170 in ლექცია და ვწუხვარ, ამ სექციაში მომწონს 433 00:19:36,170 --> 00:19:38,210 ეხება ბევრი რომ უკან რა pset არის 434 00:19:38,210 --> 00:19:40,210 და როგორ გსურთ განახორციელოს, რომ თქვენი pset. 435 00:19:40,210 --> 00:19:42,400 ასე რომ, თუ მოდის, რომელსაც წაკითხვის Spec, ის ყველაფერს 436 00:19:42,400 --> 00:19:45,510 იქნება ბევრი ადვილია თქვენ უნდა გვესმოდეს, რა მე ვსაუბრობ, როცა ამბობენ, 437 00:19:45,510 --> 00:19:48,720 oh hey, ეს შეიძლება იყოს მართლაც კარგი განახორციელოს ამ სახის. 438 00:19:48,720 --> 00:19:52,870 ასე რომ, იმ თქვენ, რომლებიც არ წაიკითხა სპეც ვიცით, რომ, როგორც ნაწილი თქვენი pset, 439 00:19:52,870 --> 00:19:54,900 თქვენ აპირებთ უნდა წერენ ტიპის სახის. 440 00:19:54,900 --> 00:19:58,670 ასე რომ, ეს შეიძლება იყოს ძალიან სასარგებლო ბევრი თქვენგანი დღეს. 441 00:19:58,670 --> 00:20:01,760 >> ასე რომ, ჩვენ დავიწყებთ, არსებითად, ყველაზე მარტივი ტიპის 442 00:20:01,760 --> 00:20:04,580 სახის, შერჩევა ჯიშია. 443 00:20:04,580 --> 00:20:06,800 ტიპიური ალგორითმი როგორ ჩვენ მინდა წასვლა ამ 444 00:20:06,800 --> 00:20:10,460 is-- დავით გაიარა ამ ყველა ლექცია, ასე რომ მე სწრაფად გადაადგილება 445 00:20:10,460 --> 00:20:13,900 აქ არსებითად, თქვენ მასივი ღირებულებებს. 446 00:20:13,900 --> 00:20:17,170 და მაშინ თქვენთვის პატარა არასორტირებული მნიშვნელობა 447 00:20:17,170 --> 00:20:20,200 და სვოპ, რომ ღირებულება პირველი დაუხარისხებელი ღირებულება. 448 00:20:20,200 --> 00:20:22,700 და მაშინ უბრალოდ შეინახოს იმეორებს დანარჩენ თქვენს სიაში. 449 00:20:22,700 --> 00:20:25,740 >> აქ არის ვიზუალური განმარტება როგორ, რომ იმუშავებს. 450 00:20:25,740 --> 00:20:30,460 ასე მაგალითად, თუ ჩვენ უნდა დაიწყოს მასივი ხუთ ელემენტები, ინდექსი 451 00:20:30,460 --> 00:20:35,910 0-დან 4, 3, 5, 2, 6 და 4 ღირებულებები განთავსებული მასივი ახლავე 452 00:20:35,910 --> 00:20:38,530 ჩვენ უბრალოდ აპირებს ვივარაუდოთ, რომ ისინი ყველა დაუხარისხებელი 453 00:20:38,530 --> 00:20:41,130 იმიტომ, რომ ჩვენ არ ტესტირება სხვაგვარად. 454 00:20:41,130 --> 00:20:44,130 >> ასე რომ, როგორ შერჩევა ერთგვარი სამუშაო არის ის, რომ პირველი 455 00:20:44,130 --> 00:20:46,800 აწარმოებს მეშვეობით მთლიანად არასორტირებული მასივი. 456 00:20:46,800 --> 00:20:49,120 ეს იქნებოდა გამოარჩიეთ პატარა მნიშვნელობა. 457 00:20:49,120 --> 00:20:51,750 ამ შემთხვევაში, 3, მარჯვენა ახლა, არის პატარა. 458 00:20:51,750 --> 00:20:52,680 იგი იღებს 5. 459 00:20:52,680 --> 00:20:55,620 Nope, 5 არ არის უფრო მეტი ვიდრე ან ბოდიში, არ არის ნაკლები ვიდრე 3. 460 00:20:55,620 --> 00:20:57,779 ასე რომ, მინიმალური ღირებულება კვლავ 3. 461 00:20:57,779 --> 00:20:58,695 და შემდეგ თქვენ მიიღებთ 2. 462 00:20:58,695 --> 00:21:00,990 კომპიუტერული ხედავს, OH, 2 ნაკლებია, ვიდრე 3. 463 00:21:00,990 --> 00:21:02,750 2 უნდა იყოს მინიმალური ღირებულება. 464 00:21:02,750 --> 00:21:06,630 ასე რომ, 2 გაცვლებს, რომ პირველი მნიშვნელობა. 465 00:21:06,630 --> 00:21:10,702 >> ასე რომ, მას შემდეგ, რაც ერთ უღელტეხილზე, ჩვენ მართლაც ვხედავთ რომ 2 და 3 გაცვალეს. 466 00:21:10,702 --> 00:21:13,910 და ჩვენ უბრალოდ აპირებს გააგრძელოს აკეთებს ეს კიდევ ერთხელ დანარჩენი მასივი. 467 00:21:13,910 --> 00:21:17,660 ასე რომ, ჩვენ ვაპირებთ, რომ უბრალოდ აწარმოებს მეშვეობით ბოლო ოთხი ინდექსები მასივი. 468 00:21:17,660 --> 00:21:20,670 ჩვენ დავინახავთ, რომ 3 შემდეგი მინიმალური ღირებულება. 469 00:21:20,670 --> 00:21:23,240 ასე რომ, ჩვენ ვაპირებთ, რომ სვოპ რომ 4. 470 00:21:23,240 --> 00:21:26,900 და მაშინ ჩვენ უბრალოდ აპირებს შეინარჩუნოს გადის, სანამ, საბოლოოდ, 471 00:21:26,900 --> 00:21:33,730 მისაღებად დახარისხებული მასივი, რომელიც 2, 3, 4, 5, 6 და ყველა დახარისხებული. 472 00:21:33,730 --> 00:21:37,530 ამჯამად ყველას გვესმის ლოგიკა თუ როგორ შერჩევის დალაგების მუშაობს? 473 00:21:37,530 --> 00:21:39,669 >> თქვენ უბრალოდ უნდა გარკვეული მინიმალური ღირებულება. 474 00:21:39,669 --> 00:21:41,210 თქვენ შენახვა სიმღერა, თუ რა არის. 475 00:21:41,210 --> 00:21:45,170 და როდესაც თქვენ მას, თქვენ სვოპ ის პირველი ღირებულების მასივი 476 00:21:45,170 --> 00:21:48,740 ან, არ არის პირველი value-- შემდეგი მნიშვნელობა მასივი. 477 00:21:48,740 --> 00:21:50,150 ზემოთ. 478 00:21:50,150 --> 00:21:55,460 >> ასე რომ, როგორც თქვენ ბიჭები სახის დაინახა მოკლე glimpse, 479 00:21:55,460 --> 00:21:58,450 ჩვენ ვაპირებთ, რომ Pseudocode გარეთ. 480 00:21:58,450 --> 00:22:02,510 ასე რომ, თუ თქვენ ბიჭები უკან გვინდა შექმნან ჯგუფი, ყველას მაგიდასთან 481 00:22:02,510 --> 00:22:06,170 შეუძლია შექმნას პატარა პარტნიორი, მე ვაპირებ რათა თქვენ ბიჭები მოსწონს სამი წუთის 482 00:22:06,170 --> 00:22:08,190 უბრალოდ გაიგო მეშვეობით ლოგიკა, ინგლისურ, 483 00:22:08,190 --> 00:22:14,161 როგორ შეიძლება შეძლებს განახორციელოს pseudocode დაწერა შერჩევა ერთგვარი. 484 00:22:14,161 --> 00:22:14,910 და იქ Candy. 485 00:22:14,910 --> 00:22:16,118 გთხოვთ ამუშავება და მიიღოთ კამფეტი. 486 00:22:16,118 --> 00:22:19,520 თუ თქვენ უკან და გსურთ candy, შემიძლია სახიფათოა candy თქვენ. 487 00:22:19,520 --> 00:22:22,850 სინამდვილეში, ამის you-- მაგარი. 488 00:22:22,850 --> 00:22:23,552 ბოდიში. 489 00:22:23,552 --> 00:22:26,751 490 00:22:26,751 --> 00:22:27,250 OK. 491 00:22:27,250 --> 00:25:23,880 492 00:25:23,880 --> 00:25:27,140 >> ასე რომ, თუ ჩვენ გვინდა, რომ, როგორც კლასი, ჩაწერის pseudocode 493 00:25:27,140 --> 00:25:30,466 ამისთვის, თუ როგორ შეიძლება მივუდგეთ ეს პრობლემა, უბრალოდ ვგრძნობ უფასოდ. 494 00:25:30,466 --> 00:25:32,340 მე უბრალოდ გარშემო და, იმისათვის, სთხოვეთ ჯგუფებს 495 00:25:32,340 --> 00:25:35,065 მომდევნო ხაზი ის, რაც ჩვენ უნდა აკეთებს. 496 00:25:35,065 --> 00:25:37,840 ასე რომ, თუ თქვენ ბიჭები მინდა, რომ დაიწყოს off, რა არის პირველი რამ, 497 00:25:37,840 --> 00:25:40,600 უნდა გავაკეთოთ, როდესაც თქვენ ცდილობთ განახორციელოს გზით გადაჭრის ამ პროგრამის 498 00:25:40,600 --> 00:25:43,480 შერჩევით დასალაგებლად სიაში? 499 00:25:43,480 --> 00:25:46,349 მოდით, უბრალოდ, ჩვენ ვივარაუდოთ, მასივი, ყველა უფლება? 500 00:25:46,349 --> 00:25:49,088 >> აუდიტორია: თქვენ მინდა, რომ შევქმნათ ერთგვარი [INAUDIBLE], რომ თქვენ 501 00:25:49,088 --> 00:25:50,420 გადის თქვენი მთელი მასივი. 502 00:25:50,420 --> 00:25:51,128 >> Andi Peng: მარჯვენა. 503 00:25:51,128 --> 00:25:54,100 ასე რომ, თქვენ აპირებს გვინდა iterate ყოველი სივრცე, არა? 504 00:25:54,100 --> 00:26:05,490 ასე რომ, დიდი. 505 00:26:05,490 --> 00:26:08,600 თუ თქვენ ბიჭები მინდა მომეცი შემდეგი ხაზი ჰო, წელს დაბრუნდა. 506 00:26:08,600 --> 00:26:11,414 507 00:26:11,414 --> 00:26:13,290 >> აუდიტორია: შეამოწმეთ მათ ყველა პატარა. 508 00:26:13,290 --> 00:26:14,248 >> Andi Peng: იქ ჩვენ წავიდეთ. 509 00:26:14,248 --> 00:26:17,438 ასე რომ, ჩვენ გვინდა გავლა და შემოწმება ვნახოთ, რა მინიმალური ღირებულება არის, უფლება? 510 00:26:17,438 --> 00:26:22,110 511 00:26:22,110 --> 00:26:24,840 მე ვაპირებ abbreviate, რომ "მინ." 512 00:26:24,840 --> 00:26:27,658 რას ბიჭები მინდა ამის გაკეთება მას შემდეგ, რაც თქვენ ი მინიმალური ღირებულება? 513 00:26:27,658 --> 00:26:28,533 >> აუდიტორია: [INAUDIBLE] 514 00:26:28,533 --> 00:26:29,942 515 00:26:29,942 --> 00:26:33,150 Andi Peng: ასე რომ, თქვენ აპირებს მინდა ჩართოთ იგი პირველი რომ მასივი, 516 00:26:33,150 --> 00:26:33,650 არა? 517 00:26:33,650 --> 00:26:45,120 518 00:26:45,120 --> 00:26:46,850 ეს არის ის, დასაწყისში, მე ვაპირებ ვთქვა. 519 00:26:46,850 --> 00:26:47,220 ყველა უფლება. 520 00:26:47,220 --> 00:26:50,386 ასე რომ, ახლა, რომ თქვენ გაცვალეს პირველი ერთი, რა გინდა, რომ ამის შემდეგ? 521 00:26:50,386 --> 00:26:54,840 ასე რომ, ახლა ჩვენ ვიცით, რომ ეს ერთი აქ უნდა იყოს პატარა ღირებულება, არა? 522 00:26:54,840 --> 00:26:58,310 მაშინ თქვენ გაქვთ დამატებითი დანარჩენი მასივი, რომ დაუხარისხებელი. 523 00:26:58,310 --> 00:27:01,569 ასე რომ, რა გსურთ ამის გაკეთება აქ, თუ ბიჭები მინდა მომეცი შემდეგი ხაზი? 524 00:27:01,569 --> 00:27:04,610 აუდიტორია: ასე შემდეგ გსურთ iterate მეშვეობით მთელი მასივი. 525 00:27:04,610 --> 00:27:05,276 Andi Peng: ჰო. 526 00:27:05,276 --> 00:27:09,857 ასე რომ, რას iterating მეშვეობით სახის გულისხმობს ჩვენ ალბათ უნდა? 527 00:27:09,857 --> 00:27:10,440 რა ტიპის of-- 528 00:27:10,440 --> 00:27:12,057 >> აუდიტორია: Oh, დამატებითი ცვლადი? 529 00:27:12,057 --> 00:27:13,890 Andi Peng ალბათ მეორე მარყუჟის, არა? 530 00:27:13,890 --> 00:27:28,914 ასე რომ, ჩვენ ალბათ აპირებს მინდა iterate მეშვეობით დიდი. 531 00:27:28,914 --> 00:27:31,830 და მაშინ თქვენ აპირებს დაბრუნდეს და ალბათ შემოწმება მინიმალური ერთხელ, 532 00:27:31,830 --> 00:27:32,100 არა? 533 00:27:32,100 --> 00:27:34,975 და თქვენ ვაპირებთ შევინარჩუნოთ იმეორებს ეს იმიტომ, რომ მარყუჟების უბრალოდ აპირებს 534 00:27:34,975 --> 00:27:36,010 შენარჩუნება გაშვებული, არა? 535 00:27:36,010 --> 00:27:39,190 >> ასე რომ, როგორც თქვენ ბიჭები ხედავთ, ჩვენ მხოლოდ ზოგადი pseudocode 536 00:27:39,190 --> 00:27:41,480 როგორ გვინდა, რომ ეს პროგრამა უნდა გამოიყურებოდეს. 537 00:27:41,480 --> 00:27:46,646 ეს iterate აქ, რა ჩვენ როგორც წესი, უნდა დაწეროთ ჩვენს კოდი 538 00:27:46,646 --> 00:27:49,270 თუ ჩვენ გვინდა iterate მეშვეობით მასივი, რა ტიპის სტრუქტურა? 539 00:27:49,270 --> 00:27:51,030 მე ვფიქრობ, რომ Christabel უკვე განაცხადა, რომ ეს ადრე. 540 00:27:51,030 --> 00:27:51,500 >> აუდიტორია: A for loop. 541 00:27:51,500 --> 00:27:52,160 >> Andi Peng: A for loop? 542 00:27:52,160 --> 00:27:52,770 ზუსტად. 543 00:27:52,770 --> 00:27:56,060 ასე რომ, ეს, ალბათ, იქნება ამისთვის loop. 544 00:27:56,060 --> 00:27:59,240 რა არის გამშვები აქ აპირებს გულისხმობს? 545 00:27:59,240 --> 00:28:02,536 როგორც წესი, თუ გსურთ შემოწმება თუ რამე არის რაღაც else-- 546 00:28:02,536 --> 00:28:03,270 >> აუდიტორია: თუ. 547 00:28:03,270 --> 00:28:06,790 >> Andi Peng: An თუ, არა? 548 00:28:06,790 --> 00:28:10,790 და მაშინ swap აქ, ჩვენ წავიდეთ მეტი მოგვიანებით, იმიტომ, რომ დავით 549 00:28:10,790 --> 00:28:12,770 გაიარა, რომ ლექცია ისევე. 550 00:28:12,770 --> 00:28:14,580 და მაშინ მეორე iterate implies-- 551 00:28:14,580 --> 00:28:15,120 >> აუდიტორია: სხვა for loop. 552 00:28:15,120 --> 00:28:16,745 >> Andi Peng: --another ამისთვის მარყუჟის, ზუსტად. 553 00:28:16,745 --> 00:28:19,870 554 00:28:19,870 --> 00:28:22,000 ასე რომ, თუ ჩვენ ვეძებთ ამ სწორად, ჩვენ 555 00:28:22,000 --> 00:28:24,680 ხედავთ, რომ ჩვენ, ალბათ, აპირებთ უნდა წყობილი for loop 556 00:28:24,680 --> 00:28:28,330 ერთად პირობითი განცხადებაში იქ და შემდეგ ფაქტობრივი ნაჭერი კოდი, რომელიც არის 557 00:28:28,330 --> 00:28:31,360 ვაპირებ სვოპ ღირებულებებს. 558 00:28:31,360 --> 00:28:35,980 ასე რომ, მე უბრალოდ ზოგადად წერია pseudocode კოდი აქ. 559 00:28:35,980 --> 00:28:38,910 და მაშინ ჩვენ რეალურად აპირებს ფიზიკურად, როგორც კლასის, 560 00:28:38,910 --> 00:28:40,700 ცდილობენ განახორციელონ ამ დღეს. 561 00:28:40,700 --> 00:28:42,486 მოდით დავუბრუნდეთ ამ IDE. 562 00:28:42,486 --> 00:28:49,243 563 00:28:49,243 --> 00:28:50,230 >> Uh-oh. 564 00:28:50,230 --> 00:28:51,754 რატომ არის, რომ not-- ეს არის. 565 00:28:51,754 --> 00:28:52,253 OK. 566 00:28:52,253 --> 00:28:55,834 567 00:28:55,834 --> 00:28:57,500 უკაცრავად, ნება მომეცით ცდილობენ მიუახლოვდით ცოტა მეტი. 568 00:28:57,500 --> 00:28:59,310 იქ ჩვენ წავიდეთ. 569 00:28:59,310 --> 00:29:05,060 ყველა მე ვაკეთებ აქ არის მე შეიქმნა პროგრამა "შერჩევა / sort.c". 570 00:29:05,060 --> 00:29:10,860 მე შეიქმნა მასივი ცხრა ღირებულებები, 4, 8, 2, 1, 6, 9, 7, 5, 3. 571 00:29:10,860 --> 00:29:14,370 ამჟამად, როგორც თქვენ შეგიძლიათ ვხედავ, ისინი უწესრიგო. 572 00:29:14,370 --> 00:29:17,880 n იქნება ნომერი, რომელიც გიჩვენებთ თანხა ღირებულებები 573 00:29:17,880 --> 00:29:18,920 თქვენ გაქვთ თქვენი მასივი. 574 00:29:18,920 --> 00:29:20,670 ამ შემთხვევაში, ჩვენ გვაქვს ცხრა ღირებულებებს. 575 00:29:20,670 --> 00:29:23,760 და მე უბრალოდ მიიღო ამისთვის loop აქ , ბეჭდავს out დაუხარისხებელი მასივი. 576 00:29:23,760 --> 00:29:28,370 >> და ბოლოს, მე ასევე მივიღეთ ამისთვის loop, უბრალოდ ბეჭდავს მას კიდევ ერთხელ. 577 00:29:28,370 --> 00:29:32,070 თეორიულად, თუ ეს პროგრამა მუშაობს სწორად, ბოლოს, 578 00:29:32,070 --> 00:29:35,670 თქვენ უნდა დაინახოს დაბეჭდილი loop რომელიც 1, 2, 3, 4, 5, 6, 7, 8, 579 00:29:35,670 --> 00:29:39,310 9 სწორად მიზნით. 580 00:29:39,310 --> 00:29:43,410 >> ამიტომ, ჩვენ მივიღეთ ჩვენი pseudocode აქ. 581 00:29:43,410 --> 00:29:46,090 ვინმეს სურს, რომელთა მიზანია, მე მხოლოდ აპირებს მისვლას ითხოვენ volunteers-- 582 00:29:46,090 --> 00:29:49,540 მითხრათ ზუსტად რა უნდა აკრიფოთ თუ ჩვენ გვინდა, რომ, პირველ რიგში, უბრალოდ iterate 583 00:29:49,540 --> 00:29:52,840 მეშვეობით დასაწყისში მასივი? 584 00:29:52,840 --> 00:29:55,204 რა არის ხაზი კოდი, მე ვარ ალბათ აპირებს უნდა აქ? 585 00:29:55,204 --> 00:29:56,990 >> აუდიტორია: [INAUDIBLE] 586 00:29:56,990 --> 00:29:59,010 >> Andi Peng: ჰო, გრძნობს უფასო რომელთა მიზანია ბოდიში, თქვენ 587 00:29:59,010 --> 00:30:02,318 არ უნდა დავდგეთ up-- შეგრძნებას უფასო ხმა ცოტა. 588 00:30:02,318 --> 00:30:08,190 >> აუდიტორია: int i შეადგენს 0- 589 00:30:08,190 --> 00:30:10,690 >> Andi Peng: ჰო, კარგი. 590 00:30:10,690 --> 00:30:15,220 >> აუდიტორია: მე ნაკლებია, ვიდრე მასივი სიგრძე. 591 00:30:15,220 --> 00:30:19,630 >> Andi Peng: ასე რომ შევინარჩუნოთ იბადება აქ, იმიტომ, რომ ჩვენ 592 00:30:19,630 --> 00:30:23,060 არ აქვს ფუნქცია, რომ გვეუბნება, სიგრძით მასივი, 593 00:30:23,060 --> 00:30:25,790 ჩვენ უკვე გვაქვს მნიშვნელობა, რომელიც ინახავს, ​​რომ. 594 00:30:25,790 --> 00:30:27,920 მარჯვენა? 595 00:30:27,920 --> 00:30:31,010 კიდევ ერთი რამ, რომ შევინარჩუნოთ ამ mind-- მასივი 596 00:30:31,010 --> 00:30:33,940 ცხრა ღირებულებები, რა არის ინდექსები? 597 00:30:33,940 --> 00:30:38,720 მოდით უბრალოდ, ვამბობთ ამ მასივი 0 3. 598 00:30:38,720 --> 00:30:41,500 თქვენ ხედავთ, რომ ბოლო ინდექსი ფაქტიურად 3. 599 00:30:41,500 --> 00:30:45,530 ეს არ არის 4, მიუხედავად იმისა, რომ იქ ოთხი ღირებულებების მასივი. 600 00:30:45,530 --> 00:30:49,866 >> ასე რომ, აქ, ჩვენ უნდა ვიყოთ ძალიან ფრთხილად რა არის ჩვენი მდგომარეობა ხანგრძლივობა 601 00:30:49,866 --> 00:30:50,490 იქნება. 602 00:30:50,490 --> 00:30:51,948 >> აუდიტორია: თუ არ იქნება, ო მინუს 1? 603 00:30:51,948 --> 00:30:54,440 Andi Peng: იგი აპირებს ო მინუს 1, ზუსტად. 604 00:30:54,440 --> 00:30:57,379 აკეთებს, რომ აზრი, რატომ ეს ო მინუს 1, ყველას? 605 00:30:57,379 --> 00:30:58,920 ეს იმიტომ, რომ კოლექტორები არის ნულოვანი ინდექსირებული. 606 00:30:58,920 --> 00:31:02,010 ისინი დაიწყოს 0-ზე და აწარმოებს ო მინუს 1. 607 00:31:02,010 --> 00:31:03,210 ჰო, ცოტა სახიფათო. 608 00:31:03,210 --> 00:31:03,730 OK. 609 00:31:03,730 --> 00:31:05,929 ხოლო შემდეგ 610 00:31:05,929 --> 00:31:08,054 აუდიტორია: Isnt'1, რომ უკვე მიღებული ზრუნვა, თუმცა, 611 00:31:08,054 --> 00:31:11,400 უბრალოდ არ ვამბობ "ნაკლებია ან თანაბარი "და უბრალოდ, ვამბობთ," ნაკლები? " 612 00:31:11,400 --> 00:31:13,108 >> Andi Peng: ეს ​​არის კარგი კითხვა. 613 00:31:13,108 --> 00:31:13,630 ასე რომ, დიახ. 614 00:31:13,630 --> 00:31:17,410 მაგრამ, ასევე, ისე, რომ ჩვენ განხორციელების შემოწმების უფლება, 615 00:31:17,410 --> 00:31:19,120 თქვენ უნდა შეადაროთ ორი ღირებულებებს. 616 00:31:19,120 --> 00:31:21,009 ასე, რომ თქვენ რეალურად გვინდა დატოვონ ", რათა" ცარიელი. 617 00:31:21,009 --> 00:31:23,050 იმის გამო, რომ თუ შევადარებთ ეს ერთი, თქვენ არ აპირებს 618 00:31:23,050 --> 00:31:25,530 აქვს არაფერი მას შემდეგ, რაც შედარება, არა? 619 00:31:25,530 --> 00:31:27,460 ჰო. 620 00:31:27,460 --> 00:31:29,297 ასე რომ, მე ++. 621 00:31:29,297 --> 00:31:30,380 მოდით დაამატოთ ჩვენი ფრჩხილები. 622 00:31:30,380 --> 00:31:30,880 Whoops. 623 00:31:30,880 --> 00:31:33,950 624 00:31:33,950 --> 00:31:34,710 შესანიშნავი. 625 00:31:34,710 --> 00:31:39,117 ასე რომ, ჩვენ დასაწყისში ჩვენი გარე loop. 626 00:31:39,117 --> 00:31:41,450 ასე რომ, ახლა ჩვენ, ალბათ, სურს შექმნა ცვლადი შენახვა 627 00:31:41,450 --> 00:31:43,085 სიმღერა პატარა ღირებულება, არა? 628 00:31:43,085 --> 00:31:45,751 ვინმეს სურს, რომ მომეცი ხაზი კოდი, რომ ყველაფერს გააკეთებს, რომ? 629 00:31:45,751 --> 00:31:48,700 630 00:31:48,700 --> 00:31:53,570 რა უნდა გავაკეთოთ, თუ ჩვენ ვაპირებთ რომ გსურთ შესანახად რაღაც? 631 00:31:53,570 --> 00:31:55,047 >> უფლება. 632 00:31:55,047 --> 00:31:57,630 იქნებ უკეთესი სახელი, რომ რომ be-- "დროებითი" სრულიად works-- 633 00:31:57,630 --> 00:32:00,655 იქნებ უფრო aptly დაასახელა იქნება, თუ გვინდა, რომ პატარა value-- 634 00:32:00,655 --> 00:32:01,624 >> აუდიტორია: მინ. 635 00:32:01,624 --> 00:32:02,790 Andi Peng: წუთი, იქ ჩვენ წავიდეთ. 636 00:32:02,790 --> 00:32:05,230 min კარგი იქნება. 637 00:32:05,230 --> 00:32:08,340 ასე რომ, აქ, რა ჩვენ მინდა ინიციალიზაცია მას? 638 00:32:08,340 --> 00:32:09,620 ეს არის ცოტა სახიფათო. 639 00:32:09,620 --> 00:32:13,580 იმის გამო, რომ ახლა დაწყებული ამ მასივი, 640 00:32:13,580 --> 00:32:15,730 თქვენ არ ჩანდა არაფერი, არა? 641 00:32:15,730 --> 00:32:19,200 მერე რა, ავტომატურად, თუ ჩვენ მხოლოდ i უდრის 0, 642 00:32:19,200 --> 00:32:22,302 რა გვინდა ინიციალიზაცია ჩვენი პირველი მინიმალური ღირებულება? 643 00:32:22,302 --> 00:32:22,802 აუდიტორია: i. 644 00:32:22,802 --> 00:32:24,790 Andi Peng: i, ზუსტად. 645 00:32:24,790 --> 00:32:27,040 Christabel, რატომ გვინდა ინიციალიზაცია მას i? 646 00:32:27,040 --> 00:32:28,510 >> აუდიტორია: იმიტომ, ასევე, ჩვენ ვიწყებთ 0. 647 00:32:28,510 --> 00:32:31,660 ასე რომ, იმიტომ, რომ ჩვენ არაფერი გვაქვს შედარება მას, მინიმალური დასრულდება მდე მიმდინარეობს 0. 648 00:32:31,660 --> 00:32:32,451 >> Andi Peng: ზუსტად. 649 00:32:32,451 --> 00:32:34,400 ასე რომ, ის სწორედ. 650 00:32:34,400 --> 00:32:36,780 იმიტომ, რომ ჩვენ არ რეალურად შევხედე არაფერი არ არის, 651 00:32:36,780 --> 00:32:38,680 ჩვენ არ ვიცით, რა არის ჩვენი მინიმალური მნიშვნელობა. 652 00:32:38,680 --> 00:32:41,960 ჩვენ გვინდა რომ ვრთავ, რომ i, რომელიც, ამჟამად, სწორედ აქ. 653 00:32:41,960 --> 00:32:44,750 და, როგორც ჩვენ ვაგრძელებთ ქვევით ამ მასივი, 654 00:32:44,750 --> 00:32:48,122 ჩვენ დავინახავთ, რომ, თითოეული დამატებითი უღელტეხილზე, i მდე. 655 00:32:48,122 --> 00:32:49,830 ასე რომ, ამ დროს, i ალბათ აპირებს 656 00:32:49,830 --> 00:32:52,329 გვინდა, რომ იყოს მინიმალური, იმიტომ, რომ ეს იქნება, რასაც 657 00:32:52,329 --> 00:32:54,520 დასაწყისში არასორტირებული მასივი. 658 00:32:54,520 --> 00:32:55,270 ზემოთ. 659 00:32:55,270 --> 00:32:58,720 >> ასე რომ, ახლა ჩვენ გვსურს, რომ ამისთვის loop აქ, რომ 660 00:32:58,720 --> 00:33:03,225 აპირებს iterate მეშვეობით დაუხარისხებელი, ან დანარჩენი მასივი. 661 00:33:03,225 --> 00:33:05,808 ვინმეს სურს მომეცი ხაზი კოდი, რომ ყველაფერს გააკეთებს, რომ? 662 00:33:05,808 --> 00:33:08,870 663 00:33:08,870 --> 00:33:11,330 Hint-- რა გვჭირდება ქვემოთ აქ? 664 00:33:11,330 --> 00:33:17,320 665 00:33:17,320 --> 00:33:18,820 რა ხდება წასვლა ამ for loop? 666 00:33:18,820 --> 00:33:19,465 ჰო. 667 00:33:19,465 --> 00:33:21,590 აუდიტორია: ასე რომ, ჩვენ მინდა აქვს სხვადასხვა რიცხვი, 668 00:33:21,590 --> 00:33:25,080 იმიტომ, რომ ჩვენ გადის დანარჩენი მასივი ნაცვლად i, იქნებ 669 00:33:25,080 --> 00:33:25,760 კ. 670 00:33:25,760 --> 00:33:27,301 >> Andi Peng: ჰო, j ჟღერს ჩემთვის. 671 00:33:27,301 --> 00:33:27,850 უდრის? 672 00:33:27,850 --> 00:33:33,930 >> აუდიტორია: ასე იქნება i + 1, იმიტომ, რომ თქვენ იწყება შემდეგი მნიშვნელობა. 673 00:33:33,930 --> 00:33:40,395 და შემდეგ end-- კიდევ ერთხელ, კ ნაკლებია, ვიდრე n მინუს 1, და შემდეგ კ ++. 674 00:33:40,395 --> 00:33:41,103 Andi Peng: დიდი. 675 00:33:41,103 --> 00:33:48,510 676 00:33:48,510 --> 00:33:52,750 >> და მაშინ აქ, ჩვენ ვაპირებთ, რომ გსურთ შეამოწმეთ თუ ჩვენი მდგომარეობა შეხვდა, 677 00:33:52,750 --> 00:33:53,250 არა? 678 00:33:53,250 --> 00:33:55,740 იმის გამო, რომ გსურთ შეცვლა მინიმალური ღირებულება 679 00:33:55,740 --> 00:33:58,700 თუ ეს რეალურად ნაკლები, რაც თქვენ შედარებით ეს, არა? 680 00:33:58,700 --> 00:34:01,146 ასე რომ, რასაც ჩვენ ვაპირებთ, რომ მინდა აქ? 681 00:34:01,146 --> 00:34:04,160 682 00:34:04,160 --> 00:34:04,897 შეამოწმეთ. 683 00:34:04,897 --> 00:34:06,730 რა ტიპის განაცხადი ვართ ჩვენ ალბათ აპირებს 684 00:34:06,730 --> 00:34:08,389 ti გსურთ გამოიყენოთ თუ ჩვენ გვინდა, რომ შემოწმება რაღაც? 685 00:34:08,389 --> 00:34:09,360 >> აუდიტორია: თუ განაცხადი. 686 00:34:09,360 --> 00:34:10,485 >> Andi Peng: თუ განაცხადი. 687 00:34:10,485 --> 00:34:13,155 ასე რომ, თუ და რა იქნება იმ პირობით, რომ ჩვენ გვინდა შიგნით 688 00:34:13,155 --> 00:34:13,988 ჩვენი თუ განაცხადი? 689 00:34:13,988 --> 00:34:18,255 690 00:34:18,255 --> 00:34:22,960 >> აუდიტორია: თუ ღირებულება j ნაკლებია, ვიდრე ღირებულება შევიდე 691 00:34:22,960 --> 00:34:24,600 >> Andi Peng: ზუსტად. 692 00:34:24,600 --> 00:34:27,480 ასე რომ, თუ ასე რომ, ეს მასივი ეწოდება "მასივი". 693 00:34:27,480 --> 00:34:27,980 შესანიშნავი. 694 00:34:27,980 --> 00:34:30,465 ასე რომ, თუ მასივი რა იყო ეს? 695 00:34:30,465 --> 00:34:31,090 გაიმეორე. 696 00:34:31,090 --> 00:34:39,590 >> აუდიტორია: თუ მასივი კ ნაკლებია, ვიდრე array-i, მაშინ ჩვენ შეიცვლება წთ. 697 00:34:39,590 --> 00:34:41,590 ასე რომ წთ იქნება კ. 698 00:34:41,590 --> 00:34:44,590 699 00:34:44,590 --> 00:34:47,249 >> Andi Peng: არა, რომ აზრი? 700 00:34:47,249 --> 00:34:48,670 OK. 701 00:34:48,670 --> 00:34:52,929 და ახლა ქვემოთ აქ, ჩვენ, ფაქტობრივად, გვინდა, რომ განახორციელოს swap, არა? 702 00:34:52,929 --> 00:34:58,285 ასე რომ გავიხსენოთ, ლექცია, რომ დავით, როდესაც იგი ცდილობდა, რომ სვოპ the-- რა იყო 703 00:34:58,285 --> 00:34:59,996 it-- ფორთოხლის წვენი და milk-- 704 00:34:59,996 --> 00:35:01,150 >> აუდიტორია: ეს იყო უხეში. 705 00:35:01,150 --> 00:35:02,816 >> Andi Peng: ჰო, რომ სახის უხეში. 706 00:35:02,816 --> 00:35:05,310 მაგრამ ეს იყო საკმაოდ კარგი კონცეფცია დემონსტრირებას დროს. 707 00:35:05,310 --> 00:35:08,430 ასე რომ, ვფიქრობ, რომ თქვენი ღირებულებების აქ. 708 00:35:08,430 --> 00:35:10,794 თქვენ მოხვდით მასივი მინიმუმ, მასივი i, 709 00:35:10,794 --> 00:35:12,460 ან რასაც ჩვენ ვცდილობთ, რომ სვოპ აქ. 710 00:35:12,460 --> 00:35:15,310 და თქვენ, ალბათ, ვერ დაასხით მათ ერთმანეთს, ამავე დროს, არა? 711 00:35:15,310 --> 00:35:17,180 ასე რომ, რასაც ჩვენ ვაპირებთ უნდა შეიქმნას აქ 712 00:35:17,180 --> 00:35:19,126 იმისათვის, რომ სვოპ ფასეულობები სწორად? 713 00:35:19,126 --> 00:35:19,820 >> აუდიტორია: დროებითი ცვლადი. 714 00:35:19,820 --> 00:35:21,370 >> Andi Peng: დროებითი ცვლადი. 715 00:35:21,370 --> 00:35:22,570 ასე რომ მოდით int temp. 716 00:35:22,570 --> 00:35:25,681 აგრეთვე, ეს იქნება უკეთესი დრო, რომელთა მიზანია: Whoa, რა იყო ეს? 717 00:35:25,681 --> 00:35:26,180 OK. 718 00:35:26,180 --> 00:35:29,800 ასე რომ, ეს იქნებოდა უკეთესი დრო ასახელებს ცვლადი "დროებითი". 719 00:35:29,800 --> 00:35:30,730 ასე რომ მოდით int temp. 720 00:35:30,730 --> 00:35:32,563 ჩვენ რას აპირებს მითითებული temp ტოლია აქ? 721 00:35:32,563 --> 00:35:34,752 722 00:35:34,752 --> 00:35:35,335 აუდიტორია: Min? 723 00:35:35,335 --> 00:35:38,508 724 00:35:38,508 --> 00:35:39,716 Andi Peng: ეს ​​ცოტა სახიფათო. 725 00:35:39,716 --> 00:35:43,110 726 00:35:43,110 --> 00:35:44,880 ეს რეალურად არ აქვს მნიშვნელობა ბოლომდე. 727 00:35:44,880 --> 00:35:47,690 არ აქვს მნიშვნელობა, რა რათა თქვენ სვოპ 728 00:35:47,690 --> 00:35:50,862 რადგან თქვენ მიღების დარწმუნებული ვარ, რომ თქვენ შენახვა სიმღერა, თუ რას შევცვალე. 729 00:35:50,862 --> 00:35:52,250 >> აუდიტორია: ეს შეიძლება იყოს მასივი-i. 730 00:35:52,250 --> 00:35:53,666 >> Andi Peng: ჰო, მოდით გავაკეთოთ array-i. 731 00:35:53,666 --> 00:35:55,950 732 00:35:55,950 --> 00:35:59,305 და მერე რა არის შემდეგი ხაზი კოდი გვინდა, რომ გვქონდეს აქ? 733 00:35:59,305 --> 00:36:00,680 აუდიტორია: array-i ტოლია მასივი კ. 734 00:36:00,680 --> 00:36:07,154 735 00:36:07,154 --> 00:36:08,070 Andi Peng: და ბოლოს? 736 00:36:08,070 --> 00:36:12,070 აუდიტორია: array-j ტოლია მასივი-i. 737 00:36:12,070 --> 00:36:14,525 აუდიტორია: ან მასივი j ტოლობის მასივი temp-- ან, temp. 738 00:36:14,525 --> 00:36:17,135 739 00:36:17,135 --> 00:36:19,430 >> Andi Peng: OK. 740 00:36:19,430 --> 00:36:21,510 მოდით აწარმოებს და ვნახოთ თუ ის იმუშავებს. 741 00:36:21,510 --> 00:36:37,520 742 00:36:37,520 --> 00:36:39,335 სად არის ის, რომ ხდება? 743 00:36:39,335 --> 00:36:40,210 ოჰ, რომ პრობლემა. 744 00:36:40,210 --> 00:36:44,320 იხილეთ, on line 40, ჩვენ ცდილობს გამოიყენოს მასივი j? 745 00:36:44,320 --> 00:36:47,022 მაგრამ სად j მხოლოდ არსებობს? 746 00:36:47,022 --> 00:36:48,402 >> აუდიტორია: In for loop. 747 00:36:48,402 --> 00:36:49,110 Andi Peng: მარჯვენა. 748 00:36:49,110 --> 00:36:51,730 ასე რომ, რასაც ჩვენ ვაპირებთ, რომ უნდა გავაკეთოთ? 749 00:36:51,730 --> 00:36:53,170 >> აუდიტორია: განსაზღვრეთ გარეთ the-- 750 00:36:53,170 --> 00:36:57,777 751 00:36:57,777 --> 00:37:00,610 აუდიტორია: ჰო, მე ვფიქრობ, თქვენ უნდა გამოიყენოს სხვა, თუ განაცხადი, არა? 752 00:37:00,610 --> 00:37:05,230 ასე რომ, თუ minimum-- ყველა უფლება, მოდით მე ვფიქრობ. 753 00:37:05,230 --> 00:37:08,170 754 00:37:08,170 --> 00:37:09,990 >> Andi Peng: ბიჭები, ცდილობენ შევხედოთ მოდით 755 00:37:09,990 --> 00:37:11,270 ვნახოთ, რა არის ის, რომ ჩვენ შეგვიძლია გავაკეთოთ აქ? 756 00:37:11,270 --> 00:37:11,811 >> აუდიტორია: OK. 757 00:37:11,811 --> 00:37:15,900 ასე რომ, თუ მინიმალური არ უდრის j-- ასე რომ, თუ მინიმალური მაინც შევიდე 758 00:37:15,900 --> 00:37:17,570 მაშინ ჩვენ არ უნდა სვოპ. 759 00:37:17,570 --> 00:37:22,450 760 00:37:22,450 --> 00:37:24,712 >> Andi Peng: არა, რომ თანაბარი i? 761 00:37:24,712 --> 00:37:25,920 რა გინდათ ვთქვა აქ? 762 00:37:25,920 --> 00:37:30,494 >> აუდიტორია: ან ჰო, იმ შემთხვევაში, თუ მინიმალური არ თანაბარი i, yeah. 763 00:37:30,494 --> 00:37:39,627 764 00:37:39,627 --> 00:37:40,210 Andi Peng: OK. 765 00:37:40,210 --> 00:37:42,040 ისე, რომ წყვეტს, სახის, ჩვენს პრობლემებს. 766 00:37:42,040 --> 00:37:47,265 მაგრამ ეს ჯერ კიდევ არ გადაჭრა პრობლემა რა მოხდება, თუ j-- წლიდან j 767 00:37:47,265 --> 00:37:49,890 არ არსებობს გარეთ, რა თქვენ გვინდა გავაკეთოთ ეს? 768 00:37:49,890 --> 00:37:50,698 გამოაცხადოს ის გარეთ? 769 00:37:50,698 --> 00:37:59,410 770 00:37:59,410 --> 00:38:02,730 მოდით ვეცადოთ გაშვებული ეს. 771 00:38:02,730 --> 00:38:04,435 Uh-oh. 772 00:38:04,435 --> 00:38:06,200 ჩვენი ერთგვარი არ მუშაობს. 773 00:38:06,200 --> 00:38:10,060 >> როგორც ხედავთ, ჩვენი თავდაპირველი მასივი ჰქონდა იმ ღირებულებებს. 774 00:38:10,060 --> 00:38:14,800 და შემდეგ მას უნდა ჰქონდეს უკვე 1, 2, 3, 4, 5, 6, 7, 8, 9. 775 00:38:14,800 --> 00:38:15,530 არ მუშაობს. 776 00:38:15,530 --> 00:38:16,030 ოხ. 777 00:38:16,030 --> 00:38:17,184 რას ვაკეთებთ? 778 00:38:17,184 --> 00:38:17,850 აუდიტორია: Debug. 779 00:38:17,850 --> 00:38:21,787 780 00:38:21,787 --> 00:38:23,370 Andi Peng ყველა უფლება, ჩვენ შეგვიძლია ვცდილობთ, რომ. 781 00:38:23,370 --> 00:38:25,030 ჩვენ შეგვიძლია გამართვის. 782 00:38:25,030 --> 00:38:26,042 დააშორებს ცოტა. 783 00:38:26,042 --> 00:38:31,177 784 00:38:31,177 --> 00:38:33,656 მოდით მითითებული ჩვენი breakpoint. 785 00:38:33,656 --> 00:38:37,280 მოდით წავიდეთ მოსწონს OK. 786 00:38:37,280 --> 00:38:40,444 >> ასე რომ, რადგან ჩვენ ვიცით, რომ ამ მიმართულებით, 15, 22, 787 00:38:40,444 --> 00:38:43,610 არიან working-- რადგან ყველა ვაკეთებ უბრალოდ iterating მეშვეობით და დაბეჭდვის 788 00:38:43,610 --> 00:38:45,406 შემიძლია წავიდეთ წინ და გაფართოებული, რომ. 789 00:38:45,406 --> 00:38:47,280 დავიწყოთ line 25. 790 00:38:47,280 --> 00:38:48,712 OOP, ნება მომეცით თავი დაეღწია, რომ. 791 00:38:48,712 --> 00:38:51,598 792 00:38:51,598 --> 00:38:54,057 >> აუდიტორია: ასე breakpoint ს სადაც გამართვის იწყება? 793 00:38:54,057 --> 00:38:54,890 Andi Peng: ან გაჩერება. 794 00:38:54,890 --> 00:38:55,670 აუდიტორია: ან გაჩერება. 795 00:38:55,670 --> 00:38:55,930 Andi Peng: ჰო. 796 00:38:55,930 --> 00:38:58,640 თქვენ შეგიძლიათ დააყენოთ სხვადასხვა breakpoints და მას შეუძლია მხოლოდ ხტომა ერთი სხვა. 797 00:38:58,640 --> 00:39:01,590 მაგრამ ამ შემთხვევაში ჩვენ არ ვიცით, სადაც შეცდომა ხდება. 798 00:39:01,590 --> 00:39:03,780 ასე რომ, ჩვენ უბრალოდ გვინდა დაიწყოს ზემოდან ქვემოთ. 799 00:39:03,780 --> 00:39:05,020 Yep. 800 00:39:05,020 --> 00:39:05,550 OK. 801 00:39:05,550 --> 00:39:08,460 >> ასე რომ, ეს ხაზი აქ, ჩვენ შეიძლება გადადგას. 802 00:39:08,460 --> 00:39:11,499 თქვენ ხედავთ, ქვემოთ აქ, ჩვენ მივიღეთ მასივი. 803 00:39:11,499 --> 00:39:13,290 იმ ღირებულებების რომ მასივი. 804 00:39:13,290 --> 00:39:16,360 მიგაჩნიათ თუ არა, რომ, თუ როგორ ინდექსი 0, შეესაბამება value-- oh, 805 00:39:16,360 --> 00:39:17,526 მე ვაპირებ ცდილობენ მიუახლოვდით. 806 00:39:17,526 --> 00:39:20,650 სამწუხაროდ, ეს მართლაც რთულია, რომ see-- at მასივი ინდექსი 0, 807 00:39:20,650 --> 00:39:24,090 ჩვენ გვაქვს ღირებულება 4 და მაშინ ასე მეოთხე და ასე შემდეგ. 808 00:39:24,090 --> 00:39:25,670 ჩვენ გვაქვს ჩვენი ადგილობრივი ცვლადები. 809 00:39:25,670 --> 00:39:28,570 ახლა მე უდრის 0, რაც ჩვენ გვინდა, რომ იყოს. 810 00:39:28,570 --> 00:39:31,540 811 00:39:31,540 --> 00:39:33,690 >> ასე რომ, მოდით შენარჩუნება სტეპინგზე მეშვეობით. 812 00:39:33,690 --> 00:39:36,850 ჩვენი მინიმალური უდრის 0, რომელიც ჩვენ ასევე გვინდა, რომ იყოს. 813 00:39:36,850 --> 00:39:39,470 814 00:39:39,470 --> 00:39:45,560 და მაშინ ჩვენ შევა ჩვენი მეორე loop, თუ მასივი კ ნაკლებია, ვიდრე მასივი-i, 815 00:39:45,560 --> 00:39:46,380 რომელიც არ იყო. 816 00:39:46,380 --> 00:39:48,130 ასე რომ, ხედავთ, როგორ რომ გამოტოვებენ, რომ? 817 00:39:48,130 --> 00:39:52,430 >> აუდიტორია: ასე უნდა იყოს თუ მინიმალური, ყველა that-- არ უნდა, რომ 818 00:39:52,430 --> 00:39:55,424 იყოს შიგნით პირველი მარყუჟის? 819 00:39:55,424 --> 00:39:57,340 Andi Peng: არა, იმიტომ, თქვენ კვლავ სურს გამოსცადოს. 820 00:39:57,340 --> 00:40:00,329 გსურთ თუ შედარებით ყოველ დროს, მას შემდეგ, რაც თქვენ აწარმოებს მეშვეობით. 821 00:40:00,329 --> 00:40:02,620 თქვენ არ მინდა ამის გაკეთება პირველ გამჭოლი. 822 00:40:02,620 --> 00:40:05,240 გსურთ ამის გაკეთება ყოველი დამატებითი უღელტეხილზე კიდევ ერთხელ. 823 00:40:05,240 --> 00:40:07,198 ასე, რომ თქვენ გსურთ შემოწმება თქვენი მდგომარეობა შიგნით. 824 00:40:07,198 --> 00:40:11,610 825 00:40:11,610 --> 00:40:13,746 ასე რომ, ჩვენ უბრალოდ აპირებს შენარჩუნება გადის აქ. 826 00:40:13,746 --> 00:40:17,337 827 00:40:17,337 --> 00:40:18,420 მე მივცემ თქვენ ბიჭები მინიშნება. 828 00:40:18,420 --> 00:40:23,910 ეს უნდა გააკეთოს, რომ როდესაც თქვენ შემოწმების თქვენი პირობით, 829 00:40:23,910 --> 00:40:26,600 თქვენ არ შემოწმების სწორი ინდექსი. 830 00:40:26,600 --> 00:40:32,510 ასე რომ, ახლა თქვენ შემოწმება მასივი მაჩვენებელი კ ნაკლებია, ვიდრე მასივი 831 00:40:32,510 --> 00:40:33,970 ინდექსი i. 832 00:40:33,970 --> 00:40:36,580 მაგრამ რას აკეთებს up at დასაწყისში for loop? 833 00:40:36,580 --> 00:40:38,260 ხომ არ შექმნის j ტოლი i? 834 00:40:38,260 --> 00:40:41,260 835 00:40:41,260 --> 00:40:45,415 >> ჰო, ასე რომ ჩვენ შეგვიძლია რეალურად გასვლა debugger აქ. 836 00:40:45,415 --> 00:40:47,040 მოდით შევხედოთ ჩვენი pseudocode. 837 00:40:47,040 --> 00:40:50,070 838 00:40:50,070 --> 00:40:52,580 For-- ჩვენ ვაპირებთ იწყება i = 0. 839 00:40:52,580 --> 00:40:54,760 ჩვენ ვაპირებთ, რომ ახვიდეთ ო მინუს 1. 840 00:40:54,760 --> 00:40:58,040 მოდით შეამოწმეთ, არ გვაქვს, რომ უფლება? 841 00:40:58,040 --> 00:40:59,580 Yep, რომ სწორი იყო. 842 00:40:59,580 --> 00:41:02,080 >> ასე რომ, შიგნით აქ, ჩვენ აპირებთ შექმნათ მინიმალური ღირებულება 843 00:41:02,080 --> 00:41:03,630 და მითითებული, რომ თანაბარი i. 844 00:41:03,630 --> 00:41:04,950 ხომ არ გავაკეთოთ, რომ? 845 00:41:04,950 --> 00:41:06,270 Yep, რომ. 846 00:41:06,270 --> 00:41:10,430 ახლა ჩვენს შიდა ამისთვის მარყუჟის, ჩვენ ვაპირებთ, რომ გავაკეთოთ j შეადგენს i ო მინუს 1. 847 00:41:10,430 --> 00:41:11,950 ხომ არ გავაკეთოთ, რომ? 848 00:41:11,950 --> 00:41:15,540 მართლაც, ჩვენ გავაკეთეთ, რომ. 849 00:41:15,540 --> 00:41:19,922 >> ასე რომ, თუმცა, რა ჩვენ შედარებით აქ? 850 00:41:19,922 --> 00:41:20,925 >> აუდიტორია: j + 1. 851 00:41:20,925 --> 00:41:21,716 Andi Peng: ზუსტად. 852 00:41:21,716 --> 00:41:24,184 853 00:41:24,184 --> 00:41:27,350 და მაშინ ვაპირებთ გვინდა მითითებული თქვენი მინიმალური ტოლია j + 1, ისევე. 854 00:41:27,350 --> 00:41:31,057 855 00:41:31,057 --> 00:41:32,640 ასე რომ, მე გაიარა, რომ ძალიან სწრაფად. 856 00:41:32,640 --> 00:41:36,190 მიგაჩნიათ თუ არა ბიჭები გაგება, ამიტომ ეს j + 1? 857 00:41:36,190 --> 00:41:36,890 OK. 858 00:41:36,890 --> 00:41:40,700 >> ასე რომ, თქვენს მასივი, თქვენი პირველი გადის, 859 00:41:40,700 --> 00:41:44,850 თქვენი for მარყუჟის, int i უდრის 0, მოდით უბრალოდ 860 00:41:44,850 --> 00:41:46,740 ვივარაუდოთ, რომ ეს არ შეცვლილა. 861 00:41:46,740 --> 00:41:53,180 862 00:41:53,180 --> 00:41:56,760 ჩვენ გვყავს მასივი, სრულიად, მხოლოდ ოთხი დაუხარისხებელი ელემენტების, არა? 863 00:41:56,760 --> 00:42:00,760 ასე რომ, ჩვენ გვინდა ინიციალიზაცია i = 0. 864 00:42:00,760 --> 00:42:03,650 და მე ვაპირებ აწარმოებს ამ loop. 865 00:42:03,650 --> 00:42:08,560 ასე რომ, პირველ უღელტეხილზე, ჩვენ ვაპირებთ ინიციალიზაცია ცვლადში "min" 866 00:42:08,560 --> 00:42:11,245 რომელიც ასევე შეადგენს i, რადგან ჩვენ არ გვაქვს მინიმალური ღირებულება. 867 00:42:11,245 --> 00:42:12,870 ასე რომ, გაკეთებული უდრის 0, ისევე. 868 00:42:12,870 --> 00:42:16,182 869 00:42:16,182 --> 00:42:17,640 და მაშინ ჩვენ ვაპირებთ გავლა. 870 00:42:17,640 --> 00:42:19,270 ჩვენ გვინდა iterate ერთხელ. 871 00:42:19,270 --> 00:42:22,900 ახლა, ჩვენ აღმოვაჩინეთ, რაც ჩვენი მინიმალური არის, ჩვენ გვინდა რომ iterate 872 00:42:22,900 --> 00:42:25,190 ერთხელ თუ ეს შედარება, არა? 873 00:42:25,190 --> 00:42:40,440 ასე რომ, j, აქ, აპირებს თანაბარი i, რომელიც არის 0. 874 00:42:40,440 --> 00:42:46,320 და მაშინ, თუ მასივი j პლუს i, რომელიც არის ერთი, რომ მომდევნო მეტი, ნაკლები 875 00:42:46,320 --> 00:42:49,270 ვიდრე თქვენი მიმდინარე მინიმალური მნიშვნელობა, გსურთ სვოპ. 876 00:42:49,270 --> 00:42:56,850 >> ასე რომ, მოდით უბრალოდ, ვამბობთ, რომ ჩვენ მიიღო, ისევე, 2, 5, 1, 8. 877 00:42:56,850 --> 00:43:01,610 ახლა, მე უდრის 0 კ უდრის 0. 878 00:43:01,610 --> 00:43:05,210 ეს არის ჩვენი მინიმალური ღირებულება. 879 00:43:05,210 --> 00:43:09,950 თუ მასივი j პლუს შევიდე ასე რომ, თუ ერთ-ერთი რომ მას შემდეგ, რაც ერთი ჩვენ შევხედავთ 880 00:43:09,950 --> 00:43:13,450 უფრო მეტი, ვიდრე ერთი, სანამ ის, ის აპირებს გახდეს მინიმალური. 881 00:43:13,450 --> 00:43:18,120 >> ასე რომ აქ ჩვენ ვხედავთ, რომ 5 ნაკლები არ არის, რომ. 882 00:43:18,120 --> 00:43:19,730 ასე რომ, ის აპირებს არ უნდა იყოს 5. 883 00:43:19,730 --> 00:43:23,580 ჩვენ ვხედავთ, რომ 1 ნაკლებია 2, არა? 884 00:43:23,580 --> 00:43:32,970 ასე რომ, ახლა ჩვენ ვიცით, რომ ჩვენი მინიმალური არის იქნება ინდექსის მნიშვნელობა 0, 1, 2. 885 00:43:32,970 --> 00:43:34,030 ჰო? 886 00:43:34,030 --> 00:43:39,170 და მაშინ, როდესაც თქვენ ქვემოთ აქ, შეგიძლიათ სვოპ სწორი ღირებულებები. 887 00:43:39,170 --> 00:43:42,610 >> ასე რომ, როდესაც თქვენ ბიჭები უბრალოდ მქონე j ადრე, თქვენ არ ეძებს ერთი 888 00:43:42,610 --> 00:43:43,260 მას შემდეგ. 889 00:43:43,260 --> 00:43:44,520 თქვენ ეძებს იგივე ღირებულება, რომელიც 890 00:43:44,520 --> 00:43:46,290 ამიტომ, ის უბრალოდ არ აკეთებს არაფერს. 891 00:43:46,290 --> 00:43:49,721 არა, რომ აზრი ყველას, ამიტომ ჩვენ საჭირო, რომ პლუს 1 იქ? 892 00:43:49,721 --> 00:43:50,220 OK. 893 00:43:50,220 --> 00:43:53,345 ახლა მოდით უბრალოდ აწარმოებს მეშვეობით, რათა დარწმუნებული ვარ, რომ დანარჩენი კოდი არის სწორი. 894 00:43:53,345 --> 00:44:04,424 895 00:44:04,424 --> 00:44:05,340 რატომ არის, რომ ხდება? 896 00:44:05,340 --> 00:44:14,780 897 00:44:14,780 --> 00:44:16,364 Ah, ეს წთ უფლება აქ. 898 00:44:16,364 --> 00:44:17,780 ჩვენ ვიყავით შედარებით არასწორი მნიშვნელობა. 899 00:44:17,780 --> 00:44:24,944 900 00:44:24,944 --> 00:44:25,906 Oh no. 901 00:44:25,906 --> 00:44:30,720 902 00:44:30,720 --> 00:44:33,482 >> ჰო, აქ ქვემოთ ვიყავით შევცვალე არასწორი ღირებულებები ისევე. 903 00:44:33,482 --> 00:44:34,940 იმის გამო, რომ ჩვენ შევხედავთ i და j. 904 00:44:34,940 --> 00:44:36,440 ეს არის პირობა, ჩვენ შემოწმებას. 905 00:44:36,440 --> 00:44:39,160 ჩვენ რეალურად გვინდა, რომ სვოპ მინიმალური, მიმდინარე მინიმუმი, 906 00:44:39,160 --> 00:44:40,550 რასაც ერთი გარეთ. 907 00:44:40,550 --> 00:44:59,510 908 00:44:59,510 --> 00:45:05,402 და როგორც თქვენ ბიჭები ხედავთ ქვემოთ აქ, ჩვენ გვაქვს დახარისხებული მასივი. 909 00:45:05,402 --> 00:45:07,110 ეს უბრალოდ უნდა გაეკეთებინათ ის ფაქტი, რომ 910 00:45:07,110 --> 00:45:09,350 ჩვენ შემოწმების ღირებულებები ჩვენ შედარება 911 00:45:09,350 --> 00:45:11,226 ჩვენ არ ეძებს მარჯვენა ღირებულებებს. 912 00:45:11,226 --> 00:45:13,850 ჩვენ შევხედავთ იგივე ერთი აქ, ფაქტობრივად, არ შევცვალე ის. 913 00:45:13,850 --> 00:45:17,135 თქვენ უნდა შევხედოთ ერთი შემდეგი მას და შემდეგ შეგიძლიათ სვოპ. 914 00:45:17,135 --> 00:45:19,260 ასე რომ, რა იყო ერთგვარი bugging ჩვენი კოდი ადრე. 915 00:45:19,260 --> 00:45:22,460 და რაც მე აქ არის ყველაფერი debugger შეიძლება გაკეთდეს თქვენთვის 916 00:45:22,460 --> 00:45:23,810 მე უბრალოდ ეს ფორუმში, იმიტომ, რომ ეს ადვილი 917 00:45:23,810 --> 00:45:26,320 იმისათვის, რომ ნახოთ ვიდრე ცდილობს რომ მიუახლოვდით debugger. 918 00:45:26,320 --> 00:45:29,391 არა, რომ აზრი ყველას? 919 00:45:29,391 --> 00:45:29,890 ზემოთ. 920 00:45:29,890 --> 00:45:34,800 921 00:45:34,800 --> 00:45:35,410 >> ყველა უფლება. 922 00:45:35,410 --> 00:45:41,070 ჩვენ შეგიძლიათ გადაადგილება, რათა ლაპარაკი asymptotic ნოტაცია, რომელიც 923 00:45:41,070 --> 00:45:44,580 უბრალოდ ლამაზი გზა ამბობდა runtimes ყველა ამ სახის. 924 00:45:44,580 --> 00:45:47,650 ასე რომ, მე ვიცი, დავით, ლექცია, შეეხო runtimes. 925 00:45:47,650 --> 00:45:52,124 დადიოდა მთელი ფორმულა როგორ გამოვთვალოთ runtimes. 926 00:45:52,124 --> 00:45:53,040 არ აწუხებს, რომ. 927 00:45:53,040 --> 00:45:54,660 თუ თქვენ ნამდვილად აინტერესებს იმაზე, თუ როგორ მუშაობს, 928 00:45:54,660 --> 00:45:55,810 მოგერიდებათ გაიგო, რომ მე მას შემდეგ, რაც განყოფილებაში. 929 00:45:55,810 --> 00:45:57,560 ჩვენ შეგვიძლია გავლა ფორმულები ერთად. 930 00:45:57,560 --> 00:46:00,689 მაგრამ ყველა ბიჭები უნდა ნამდვილად ვიცი, რომ n კვადრატში მეტი 2 931 00:46:00,689 --> 00:46:01,980 არის იგივე, როგორც n კვადრატში. 932 00:46:01,980 --> 00:46:04,710 იმის გამო, რომ დიდი რაოდენობის, მაჩვენებლებით, იზრდება საუკეთესო. 933 00:46:04,710 --> 00:46:06,590 ასე რომ, ჩვენი მიზნებისთვის, ყველა ჩვენ აღელვებს 934 00:46:06,590 --> 00:46:09,470 ის არის, რომ გიგანტური რომ იზრდება. 935 00:46:09,470 --> 00:46:13,340 >> ასე რომ, რა არის საუკეთესო შემთხვევაში runtime შერჩევის დალაგების? 936 00:46:13,340 --> 00:46:15,830 თუ თქვენ აპირებთ უნდა iterate მეშვეობით სია 937 00:46:15,830 --> 00:46:18,712 და შემდეგ iterate მეშვეობით დანარჩენი სიაში, 938 00:46:18,712 --> 00:46:20,420 რამდენი ჯერ აპირებთ თუ არა, ალბათ, 939 00:46:20,420 --> 00:46:24,612 ყველაზე ცუდი case-- წელს საუკეთესო შემთხვევაში, ბოდიში აწარმოებს მეშვეობით? 940 00:46:24,612 --> 00:46:27,070 იქნებ უკეთესი კითხვაზე ვთხოვო, რა არის ყველაზე უარესი შემთხვევაში 941 00:46:27,070 --> 00:46:28,153 runtime შერჩევის დალაგების. 942 00:46:28,153 --> 00:46:29,366 აუდიტორია: n კვადრატში. 943 00:46:29,366 --> 00:46:30,740 Andi Peng: ეს ​​n კვადრატში, მარჯვნივ. 944 00:46:30,740 --> 00:46:36,986 ასე რომ, ადვილი გზა, რომ ვფიქრობ, ეს არის, როგორც, ნებისმიერ დროს თქვენ გაქვთ ორი წყობილი ამისთვის მარყუჟების, 945 00:46:36,986 --> 00:46:38,110 ის აპირებს იყოს N კვადრატში. 946 00:46:38,110 --> 00:46:40,386 იმის გამო, რომ არა მხოლოდ თქვენ, გადის კიდევ ერთხელ, 947 00:46:40,386 --> 00:46:42,260 თქვენ უნდა დაბრუნდეს გარშემო და აწარმოებს მეშვეობით 948 00:46:42,260 --> 00:46:44,980 კიდევ ერთხელ შიგნით ყველა ღირებულება. 949 00:46:44,980 --> 00:46:48,640 ასე რომ ამ შემთხვევაში, თქვენ გაშვებული n ჯერ N კვადრატში, რომელსაც is-- ბოდიში, 950 00:46:48,640 --> 00:46:50,505 N ჯერ N, რომელიც უდრის n კვადრატში. 951 00:46:50,505 --> 00:46:53,230 952 00:46:53,230 --> 00:46:56,360 >> და ერთგვარი ასევე ცოტა უნიკალური იმ გაგებით, 953 00:46:56,360 --> 00:46:59,774 ის, რომ არ აქვს მნიშვნელობა, თუ ამ ღირებულებები უკვე მიზნით. 954 00:46:59,774 --> 00:47:01,440 ეს ჯერ კიდევ აპირებს მეშვეობით მაინც. 955 00:47:01,440 --> 00:47:03,872 მოდით უბრალოდ, ვამბობთ, რომ ეს იყო 1, 2, 3, 4. 956 00:47:03,872 --> 00:47:07,080 მიუხედავად იმისა, არის თუ არა ეს იყო იმისათვის, რომ ეს ჯერ კიდევ არ გაიქცა მეშვეობით 957 00:47:07,080 --> 00:47:08,620 და მაინც გადაამოწმა მინიმალური ღირებულება. 958 00:47:08,620 --> 00:47:10,100 ეს არ გააკეთა იგივე რაოდენობის ამოწმებს 959 00:47:10,100 --> 00:47:12,780 თითოეული დროს, თუნდაც ეს პრაქტიკულად არ შეეხოთ არაფერს. 960 00:47:12,780 --> 00:47:16,940 >> ასე რომ, ამ შემთხვევაში, საუკეთესო და ყველაზე ცუდი runtimes არის რეალურად ექვივალენტს. 961 00:47:16,940 --> 00:47:19,160 ასე რომ ელოდებიან runtime შერჩევის დალაგების, 962 00:47:19,160 --> 00:47:23,790 რომელიც ჩვენ დანიშნოს სიმბოლო თეტა, თეტა, ამ შემთხვევაში, 963 00:47:23,790 --> 00:47:24,790 ასევე იქნება n კვადრატში. 964 00:47:24,790 --> 00:47:26,480 სამივე ეს იქნება n კვადრატში. 965 00:47:26,480 --> 00:47:29,653 ყველას ნათელი, თუ რატომ runtime n კვადრატში? 966 00:47:29,653 --> 00:47:33,360 967 00:47:33,360 --> 00:47:33,980 >> ყველა უფლება. 968 00:47:33,980 --> 00:47:39,120 ასე რომ, მე უბრალოდ აპირებს სწრაფად აწარმოებს მეშვეობით დანარჩენი სახის. 969 00:47:39,120 --> 00:47:41,137 ალგორითმი ბუშტი დალაგება მახსოვს, 970 00:47:41,137 --> 00:47:43,220 ეს იყო პირველი დავით წავიდა ლექცია. 971 00:47:43,220 --> 00:47:46,000 არსებითად, თქვენ დაიხევს მთელი სია 972 00:47:46,000 --> 00:47:48,950 და თქვენ swap-- უბრალოდ შედარება ორი დროს. 973 00:47:48,950 --> 00:47:51,350 და თუ ერთი უფრო დიდი, ვიდრე უბრალოდ სვოპ მათ. 974 00:47:51,350 --> 00:47:53,590 ასე რომ, თუ ეს უფრო მეტია, თქვენ სვოპ. 975 00:47:53,590 --> 00:47:56,180 მაქვს ოფიციალური უფლება აქ. 976 00:47:56,180 --> 00:47:59,100 >> ასე რომ, მოდით უბრალოდ, ვამბობთ თუ არა 8, 6, 4, 2. 977 00:47:59,100 --> 00:48:00,571 ნეტავ შედარება 8 და 6. 978 00:48:00,571 --> 00:48:01,570 ნეტავ უნდა სვოპ მათ. 979 00:48:01,570 --> 00:48:02,610 თქვენ შედარების 8 და 4. 980 00:48:02,610 --> 00:48:03,609 ნეტავ უნდა სვოპ მათ. 981 00:48:03,609 --> 00:48:07,000 თუ თქვენ უნდა სვოპ 8 და 2, შეცვლის მათ ასევე. 982 00:48:07,000 --> 00:48:10,760 ასე რომ, ასეთი გრძნობა, ხედავთ, ითამაშა მეტი ხანგრძლივი დროის განმავლობაში, 983 00:48:10,760 --> 00:48:13,730 როგორ ღირებულებების სახის ბუშტი ბოლოები, რის გამოც ჩვენ მას 984 00:48:13,730 --> 00:48:15,320 bubble sort. 985 00:48:15,320 --> 00:48:19,950 >> ჩვენ მხოლოდ აწარმოებს მეშვეობით ისევ ჩვენი მეორე უღელტეხილზე, და მესამე უღელტეხილზე, 986 00:48:19,950 --> 00:48:21,150 და მეოთხე აკეთებს. 987 00:48:21,150 --> 00:48:25,820 არსებითად, bubble sort უბრალოდ გადის სანამ თქვენ არ რაიმე უფრო გაცვლებს. 988 00:48:25,820 --> 00:48:31,109 ასე რომ, ამ თვალსაზრისით, ეს მხოლოდ ზოგადი pseudocode მას. 989 00:48:31,109 --> 00:48:32,650 არ აწუხებს, ეს იქნება ყველა ონლაინ რეჟიმში. 990 00:48:32,650 --> 00:48:34,990 ჩვენ არ უნდა რეალურად წასვლა ამ. 991 00:48:34,990 --> 00:48:38,134 >> ჩვენ უბრალოდ ვრთავ counter ცვლადი რომ იწყება 0. 992 00:48:38,134 --> 00:48:39,800 ჩვენ iterate მთელი მასივი. 993 00:48:39,800 --> 00:48:43,420 და თუ ერთი მნიშვნელობა is-- თუ ეს მნიშვნელობა მეტია, რომ ღირებულება, 994 00:48:43,420 --> 00:48:44,610 თქვენ აპირებს სვოპ მათ. 995 00:48:44,610 --> 00:48:46,860 და მაშინ თქვენ უბრალოდ შენარჩუნება აპირებს. 996 00:48:46,860 --> 00:48:47,970 და თქვენ ვაპირებთ ითვლიან. 997 00:48:47,970 --> 00:48:50,845 და თქვენ უბრალოდ აპირებს შეინარჩუნოს აკეთებს ეს მაშინ, როცა კონტრ არის დიდი 998 00:48:50,845 --> 00:48:53,345 ვიდრე 0, რაც ნიშნავს, რომ ყოველ დროს, თქვენ უნდა სვოპ, 999 00:48:53,345 --> 00:48:55,220 თქვენ იცით, თუ უნდათ უკან და შემოწმება ერთხელ. 1000 00:48:55,220 --> 00:48:59,510 გსურთ, რომ შევინარჩუნოთ შემოწმების სანამ თქვენ იცით, რომ თქვენ არ უნდა სვოპ მთელი მსოფლიოს მასშტაბით. 1001 00:48:59,510 --> 00:49:05,570 >> რა არის საუკეთესო და ყველაზე ცუდი შემთხვევაში runtimes for ბუშტი დალაგება? 1002 00:49:05,570 --> 00:49:09,300 და hint-- ეს არის რეალურად სხვადასხვა შერჩევა ერთგვარი იმ გაგებით, 1003 00:49:09,300 --> 00:49:11,810 რომ ეს ორი პასუხი არ არის იგივე. 1004 00:49:11,810 --> 00:49:14,709 დაფიქრდით, რა მოხდებოდა იმ შემთხვევაში, თუ იგი უკვე გადანაწილებული. 1005 00:49:14,709 --> 00:49:16,500 და ვიფიქროთ, რა მოხდება, თუ ეს იყო 1006 00:49:16,500 --> 00:49:18,372 იმ შემთხვევაში, რომელშიც იგი არ არის დახარისხებული. 1007 00:49:18,372 --> 00:49:20,580 და თქვენ შეგიძლიათ სახის აწარმოებს მეშვეობით, რის გამოც, რომ ხდება. 1008 00:49:20,580 --> 00:49:22,954 მე მივცემ თქვენ ბიჭები, ისევე, როგორც 30 წამი ვიფიქროთ, რომ. 1009 00:49:22,954 --> 00:49:52,330 1010 00:49:52,330 --> 00:49:53,540 >> OK. 1011 00:49:53,540 --> 00:49:57,462 ვინმეს აქვს გამოიცანით რა უარეს შემთხვევაში runtime of bubble sort არის? 1012 00:49:57,462 --> 00:49:57,962 ჰო. 1013 00:49:57,962 --> 00:50:07,810 >> აუდიტორია: უნდა იყოს, როგორიცაა, N ჯერ ო მინუს 1 ან რამე მაგდაგვარს? 1014 00:50:07,810 --> 00:50:10,650 მსგავსად, ყოველ ჯერზე ის მუშაობს, ეს უბრალოდ, როგორც ერთ-ერთი swap ნაკლები 1015 00:50:10,650 --> 00:50:10,960 რომ რაც არ იყო. 1016 00:50:10,960 --> 00:50:12,668 >> Andi Peng: ჰო, ისე, თქვენ მთლიანად უფლება. 1017 00:50:12,668 --> 00:50:15,940 და ეს არის საქმე, რომელიც თქვენს პასუხი იყო რეალურად უფრო რთული 1018 00:50:15,940 --> 00:50:17,240 ვიდრე ჩვენ უნდა მივცეთ. 1019 00:50:17,240 --> 00:50:19,772 ასე რომ, ის აპირებს პერსპექტივაში ვარ აპირებს წაშალოს ეს ყველაფერი აქ. 1020 00:50:19,772 --> 00:50:20,480 ყველას კარგი? 1021 00:50:20,480 --> 00:50:21,869 შემიძლია წაშლას ეს? 1022 00:50:21,869 --> 00:50:22,368 OK. 1023 00:50:22,368 --> 00:50:27,904 1024 00:50:27,904 --> 00:50:30,320 თქვენ აპირებს მეშვეობით n ჯერ პირველად, არა? 1025 00:50:30,320 --> 00:50:33,200 და ისინი აპირებს მეშვეობით ო მინუს 1 მეორედ, არა? 1026 00:50:33,200 --> 00:50:37,130 და მაშინ ვაპირებთ, რომ შევინარჩუნოთ აპირებს, n ნაღმების 2, et cetera. 1027 00:50:37,130 --> 00:50:40,210 დავით გააკეთა ეს ლექცია, სადაც, თუ ემატება ყველა ის ღირებულებები, 1028 00:50:40,210 --> 00:50:48,080 თქვენ, რომ რაღაც მოსწონს yeah-- მეტი 2, რომელიც არსებითად მხოლოდ ამცირებს 1029 00:50:48,080 --> 00:50:49,784 ქვემოთ n კვადრატში. 1030 00:50:49,784 --> 00:50:51,700 თქვენ აპირებთ მისაღებად უცნაური ფრაქცია არსებობს. 1031 00:50:51,700 --> 00:50:53,892 ასე რომ, უბრალოდ ვიცი, რომ n კვადრატში ყოველთვის 1032 00:50:53,892 --> 00:50:55,350 იღებს უპირატესი ფრაქციას. 1033 00:50:55,350 --> 00:50:58,450 ასე რომ, ამ შემთხვევაში, ყველაზე ცუდი runtime იქნება n კვადრატში. 1034 00:50:58,450 --> 00:51:00,210 თუ ეს იყო კლებადი იმისათვის, ვფიქრობ, თქვენ 1035 00:51:00,210 --> 00:51:02,530 უნდა მიიღოს swap თითოეული დრო. 1036 00:51:02,530 --> 00:51:05,170 >> რა იქნება, პოტენციურად, საუკეთესო შემთხვევაში runtime? 1037 00:51:05,170 --> 00:51:08,580 მოდით უბრალოდ, ვამბობთ, თუ სიაში იყო უკვე იმისათვის, რა runtime იყოს? 1038 00:51:08,580 --> 00:51:09,565 >> აუდიტორია: n. 1039 00:51:09,565 --> 00:51:10,690 Andi Peng: ეს ​​არის n, ზუსტად. 1040 00:51:10,690 --> 00:51:11,600 და რატომ არის ის ო? 1041 00:51:11,600 --> 00:51:13,850 აუდიტორია: იმიტომ, რომ თქვენ მხოლოდ უნდა შეამოწმოს თითოეული ერთხელ. 1042 00:51:13,850 --> 00:51:14,770 Andi Peng: ზუსტად. 1043 00:51:14,770 --> 00:51:17,150 ასე რომ, მაქსიმალურად runtime, იმ შემთხვევაში, თუ ამ სიაში იყო უკვე 1044 00:51:17,150 --> 00:51:20,270 sorted-- მოდით ვთქვათ, 1, 2, 3, 4-- თქვენ რომ უბრალოდ გავლა, თქვენ უნდა ნახოთ, 1045 00:51:20,270 --> 00:51:21,720 თქვენ ხედავთ, oh, ისინი ყველა პან გარეთ. 1046 00:51:21,720 --> 00:51:22,636 მე არ შემიცვლია. 1047 00:51:22,636 --> 00:51:23,370 მე გაკეთდეს. 1048 00:51:23,370 --> 00:51:26,500 ასე რომ ამ შემთხვევაში, უბრალოდ n ან რიგი ნაბიჯები, თქვენ უბრალოდ 1049 00:51:26,500 --> 00:51:29,870 უნდა შეამოწმოს პირველ სიაში. 1050 00:51:29,870 --> 00:51:33,990 >> ხოლო მას შემდეგ, ახლა ჩვენ მოხვდა Insertion დალაგების, სადაც 1051 00:51:33,990 --> 00:51:39,260 ალგორითმი არსებითად გათიშე მას დახარისხებული და არასორტირებული ნაწილი. 1052 00:51:39,260 --> 00:51:42,810 და მაშინ ერთი, არასორტირებული ღირებულებები 1053 00:51:42,810 --> 00:51:46,880 შეიყვანეს მათ შესაბამისი თანამდებობებზე დასაწყისში სიაში. 1054 00:51:46,880 --> 00:51:52,120 >> ასე მაგალითად, ჩვენ გვაქვს სია 3, 5, 2, 6, 4 ერთხელ. 1055 00:51:52,120 --> 00:51:54,750 ჩვენ ვიცით, რომ ეს გაკეთებული დაუხარისხებელი იმიტომ, რომ ჩვენ მხოლოდ 1056 00:51:54,750 --> 00:51:57,030 დაიწყო ეძებს მას. 1057 00:51:57,030 --> 00:52:00,610 ჩვენ შევხედოთ და ჩვენ ვიცით, რომ პირველი მნიშვნელობა დალაგებულია, არა? 1058 00:52:00,610 --> 00:52:04,190 თუ თქვენ მხოლოდ ეძებს მასივი ზომა, თქვენ იცით, რომ ეს დახარისხებული. 1059 00:52:04,190 --> 00:52:08,230 >> ასე რომ, ჩვენ ვიცით, რომ სხვა ოთხი დაუხარისხებელი. 1060 00:52:08,230 --> 00:52:10,980 ჩვენ გაიაროს და ჩვენ ვხედავთ, რომ მნიშვნელობა. 1061 00:52:10,980 --> 00:52:11,730 მოდით დავუბრუნდეთ. 1062 00:52:11,730 --> 00:52:13,130 ვხედავთ, რომ ღირებულების 5? 1063 00:52:13,130 --> 00:52:14,110 ჩვენ შევხედოთ მას. 1064 00:52:14,110 --> 00:52:15,204 ჩვენ შევადარებთ მას 3. 1065 00:52:15,204 --> 00:52:17,870 ჩვენ ვიცით, რომ ეს უფრო მეტია, ვიდრე 3, ასე რომ ჩვენ ვიცით, რომ დახარისხებული. 1066 00:52:17,870 --> 00:52:22,940 ასე რომ, ახლა ჩვენ ვიცით, რომ პირველი ორი დალაგებულია და ბოლო სამი არ არის. 1067 00:52:22,940 --> 00:52:24,270 >> ჩვენ შევხედოთ 2. 1068 00:52:24,270 --> 00:52:25,720 ჩვენ პირველი შეამოწმეთ იგი 5. 1069 00:52:25,720 --> 00:52:26,700 ეს არის 5-ზე ნაკლები? 1070 00:52:26,700 --> 00:52:27,240 ეს არ არის. 1071 00:52:27,240 --> 00:52:29,510 ასე რომ, ჩვენ უნდა შევინარჩუნოთ ეძებს ქვემოთ. 1072 00:52:29,510 --> 00:52:30,940 მაშინ თქვენ შეამოწმოთ 2 off 3. 1073 00:52:30,940 --> 00:52:31,850 ეს არის ნაკლები? 1074 00:52:31,850 --> 00:52:32,350 No. 1075 00:52:32,350 --> 00:52:35,430 ასე, რომ თქვენ იცით, 2 უნდა იყოს ჩასმული შევიდა წინა და 3 და 5 1076 00:52:35,430 --> 00:52:38,200 ორივე უნდა აიძულა. 1077 00:52:38,200 --> 00:52:42,190 ეს კიდევ ერთხელ გავაკეთოთ 6 და 4. 1078 00:52:42,190 --> 00:52:48,962 და ჩვენ უბრალოდ შეინახოს შემოწმების არსებითად, სადაც ჩვენ უბრალოდ შემოწმება, შემოწმება, შემოწმება. 1079 00:52:48,962 --> 00:52:51,170 და სანამ ეს სწორი პოზიცია, სახის მხოლოდ 1080 00:52:51,170 --> 00:52:54,890 ჩადეთ იგი სწორი პოზიცია, რაც არის, სადაც სახელი მოვიდა. 1081 00:52:54,890 --> 00:52:59,830 >> ასე რომ მხოლოდ ალგორითმი, pseudocode per se, სახის, 1082 00:52:59,830 --> 00:53:04,990 შესახებ, თუ როგორ განახორციელებენ რომ Insertion დალაგების. 1083 00:53:04,990 --> 00:53:05,954 Pseudocode აქ. 1084 00:53:05,954 --> 00:53:06,620 ეს ყველაფერი ონლაინ რეჟიმში. 1085 00:53:06,620 --> 00:53:10,720 არ აწუხებს თუ ბიჭები არიან ცდილობს კოპირება ამ ქვემოთ. 1086 00:53:10,720 --> 00:53:14,500 ასე რომ, კიდევ ერთხელ, იმავე კითხვას, თუ რა იქნება საუკეთესო და ყველაზე ცუდი runtimes 1087 00:53:14,500 --> 00:53:16,120 ჩანართი დალაგების? 1088 00:53:16,120 --> 00:53:17,750 ის ძალიან გავს ბოლო კითხვა. 1089 00:53:17,750 --> 00:53:20,479 მე მივცემ თქვენ ბიჭები, ისევე, როგორც 30 წამი ვფიქრობ, რომ ამ ისევე. 1090 00:53:20,479 --> 00:53:47,150 1091 00:53:47,150 --> 00:53:50,071 >> OK ვინმეს სურს მომეცი ყველაზე ცუდი runtime? 1092 00:53:50,071 --> 00:53:50,570 ჰო. 1093 00:53:50,570 --> 00:53:51,490 >> აუდიტორია: n კვადრატში. 1094 00:53:51,490 --> 00:53:52,573 >> Andi Peng: ეს ​​n კვადრატში. 1095 00:53:52,573 --> 00:53:53,730 და რატომ არის ის n კვადრატში? 1096 00:53:53,730 --> 00:53:57,562 >> აუდიტორია: იმის გამო, რომ საპირისპირო მიზნით, თქვენ უნდა 1097 00:53:57,562 --> 00:54:02,619 გავლა N ჯერ N, რომელიც is-- 1098 00:54:02,619 --> 00:54:03,660 Andi Peng: ჰო, ზუსტად. 1099 00:54:03,660 --> 00:54:06,610 ასე რომ, იგივე როგორც bubble sort. 1100 00:54:06,610 --> 00:54:08,720 თუ ამ სიაში არის კლებადობით, თქვენ 1101 00:54:08,720 --> 00:54:11,240 აპირებთ უნდა შეამოწმოთ პირველი ერთხელ. 1102 00:54:11,240 --> 00:54:13,470 და მაშინ ყველა დამატებითი ღირებულება, თქვენ 1103 00:54:13,470 --> 00:54:16,390 აპირებთ უნდა ნახოთ ის წინააღმდეგ თითოეული ღირებულება, არა? 1104 00:54:16,390 --> 00:54:20,290 ასე რომ, საერთოდ, თქვენ ვაპირებთ ო უღელტეხილზე ჯერ კიდევ ო გაივლის, რომელიც 1105 00:54:20,290 --> 00:54:21,750 არის n კვადრატში. 1106 00:54:21,750 --> 00:54:22,860 რაც შეეხება საუკეთესო შემთხვევაში? 1107 00:54:22,860 --> 00:54:24,360 ჰო. 1108 00:54:24,360 --> 00:54:28,840 >> აუდიტორია: N მინუს 1, იმიტომ, რომ პირველი უკვე კვადრატი. 1109 00:54:28,840 --> 00:54:30,270 >> Andi Peng: ასე რომ, ახლოს. 1110 00:54:30,270 --> 00:54:31,850 პასუხი არის, ფაქტობრივად, ნ. 1111 00:54:31,850 --> 00:54:37,189 იმის გამო, რომ მიუხედავად იმისა, რომ პირველი არის დახარისხებული, ეს არ შეიძლება რეალურად ეს 1112 00:54:37,189 --> 00:54:38,980 ჩვენ უბრალოდ lucked გარეთ, რომ, მაგალითად, რომ 2 1113 00:54:38,980 --> 00:54:40,930 მოხდა, რომ ყველაზე მცირე რაოდენობა. 1114 00:54:40,930 --> 00:54:43,680 მაგრამ ეს ყოველთვის არ იყოს საქმე. 1115 00:54:43,680 --> 00:54:48,040 თუ 2 უკვე დახარისხებული დასაწყისში მაგრამ გადავხედავთ და იქ 1 აქ, 1116 00:54:48,040 --> 00:54:49,144 1 აპირებს bump იგი. 1117 00:54:49,144 --> 00:54:51,060 და ის აპირებს დასრულდება მიმდინარეობს შეხვდნენ მაინც. 1118 00:54:51,060 --> 00:54:56,250 >> ასე რომ, საუკეთესო შემთხვევაში, ეს რეალურად იქნება n. 1119 00:54:56,250 --> 00:54:59,090 თუ თქვენ გაქვთ 1, 2, 3, 4, 5, 6, 7, 8, თქვენ 1120 00:54:59,090 --> 00:55:00,940 აპირებს მეშვეობით რომ მთელი სია ერთხელ 1121 00:55:00,940 --> 00:55:03,430 შეამოწმეთ თუ ყველაფერი კარგად არის. 1122 00:55:03,430 --> 00:55:07,390 ყველას მკაფიო გაშვებული ჯერ შერჩევა ისევე? 1123 00:55:07,390 --> 00:55:09,960 მე ვიცი, მე ვაპირებ მეშვეობით ამ მართლაც სწრაფი. 1124 00:55:09,960 --> 00:55:13,330 მაგრამ ვიცი, რომ თუ თქვენ იცით, ზოგადი ცნებები, თქვენ უნდა იყოს კარგი. 1125 00:55:13,330 --> 00:55:16,070 OK. 1126 00:55:16,070 --> 00:55:19,790 ასე რომ, მე მხოლოდ მოგცემთ ბიჭები შესაძლოა, ისევე, წუთში გაიგო, რომ თქვენი მეზობლები 1127 00:55:19,790 --> 00:55:21,890 თუ რა არის რამოდენიმე მთავარი სხვაობა 1128 00:55:21,890 --> 00:55:23,540 შორის ამ ტიპის სახის. 1129 00:55:23,540 --> 00:56:24,571 1130 00:56:24,571 --> 00:56:25,570 ჩვენ წავიდეთ, რომ მალე. 1131 00:56:25,570 --> 00:56:26,444 აუდიტორია: Oh, OK. 1132 00:56:26,444 --> 00:56:27,320 Andi Peng: ჰო. 1133 00:56:27,320 --> 00:56:28,380 OK. 1134 00:56:28,380 --> 00:56:33,420 Cool, მოდით შეკრებას, როგორც კლასი. 1135 00:56:33,420 --> 00:56:34,330 OK. 1136 00:56:34,330 --> 00:56:37,579 ასე რომ, ეს იყო ერთგვარი ღია შეკითხვის იმ გაგებით, 1137 00:56:37,579 --> 00:56:39,120 რომ არსებობს უამრავი პასუხი. 1138 00:56:39,120 --> 00:56:40,746 და ჩვენ წავიდეთ მეტი ზოგიერთი მათგანი მოკლედ. 1139 00:56:40,746 --> 00:56:43,411 მე უბრალოდ მინდოდა თქვენ ბიჭები ფიქრი რა დიფერენცირებული 1140 00:56:43,411 --> 00:56:44,530 სამივე სახის. 1141 00:56:44,530 --> 00:56:47,440 და გავიგე, ასევე, დიდი კითხვა რას შერწყმა დალაგების გავაკეთოთ? 1142 00:56:47,440 --> 00:56:50,110 დიდი კითხვა, იმიტომ, რომ ის, რაც ჩვენ მოიცავს შემდეგ. 1143 00:56:50,110 --> 00:56:52,850 >> ასე რომ შერწყმა დალაგების არის ერთი სახის, რომ ფუნქციები 1144 00:56:52,850 --> 00:56:56,100 ძალიან განსხვავებულად სხვა სახის. 1145 00:56:56,100 --> 00:56:58,180 როგორც შენ შეიძლება see-- დავით გაკეთება, რომ დემო 1146 00:56:58,180 --> 00:57:01,130 სადაც მას ჰქონდა ყველა მაგარი noises ვხედავთ, როგორ შერწყმა 1147 00:57:01,130 --> 00:57:04,010 სახის გაიქცა, როგორც, უსასრულოდ სწრაფად, ვიდრე სხვა ორი სახის? 1148 00:57:04,010 --> 00:57:04,510 OK. 1149 00:57:04,510 --> 00:57:07,580 ასე რომ, ეს იმიტომ, რომ შერწყმა დალაგების ახორციელებს, რომ გათიშე 1150 00:57:07,580 --> 00:57:11,020 და დაიპყროთ კონცეფცია, რომელიც ჩვენ ვისაუბრეთ ბევრი ლექცია. 1151 00:57:11,020 --> 00:57:14,550 იმ გაგებით, რომ ჩვენ მინდა მუშაობა მსოფლიოს სასურველი სტუმარი გახდებით, არ დამძიმდა, როდესაც თქვენ დაყოფის 1152 00:57:14,550 --> 00:57:18,120 და დაიპყროთ პრობლემები, და შესვენება მათ ქვემოთ, შემდეგ კი ისინი ერთად, 1153 00:57:18,120 --> 00:57:19,930 კარგი რამ ყოველთვის ხდება. 1154 00:57:19,930 --> 00:57:21,960 >> ასე რომ გზა, რომ შერწყმა დალაგების არსებითად მუშაობს 1155 00:57:21,960 --> 00:57:24,660 არის ის, რომ ჰყოფს დაუხარისხებელი მასივი ნახევარი. 1156 00:57:24,660 --> 00:57:26,500 და მაშინ ის რაღაც ორ ნაწილად მასივები. 1157 00:57:26,500 --> 00:57:28,220 და ეს მხოლოდ სახის ამ ორ ნაწილად. 1158 00:57:28,220 --> 00:57:31,750 უბრალოდ ნიშანდობლივია გამყოფი ნახევარი, ნახევარი, ნახევარი, სანამ ყველაფერი დალაგებულია 1159 00:57:31,750 --> 00:57:33,680 და შემდეგ რეკურსიული აყენებს ეს ყველაფერი ერთად. 1160 00:57:33,680 --> 00:57:36,550 >> ასე რომ, რეალურად აბსტრაქტული. 1161 00:57:36,550 --> 00:57:38,750 ასე რომ, ეს უბრალოდ ცოტა pseudocode. 1162 00:57:38,750 --> 00:57:41,040 თუ არა, რომ აზრი გზა ის გაშვებული? 1163 00:57:41,040 --> 00:57:43,870 ასე რომ, მოდით უბრალოდ, ვამბობთ თქვენ გაქვთ მასივი N ელემენტები, არა? 1164 00:57:43,870 --> 00:57:45,450 თუ n ნაკლებია, ვიდრე 2, შეგიძლიათ დაბრუნდეს. 1165 00:57:45,450 --> 00:57:49,040 იმის გამო, რომ თქვენ იცით, რომ, თუ არსებობს მხოლოდ ერთი რამ, ეს უნდა იყოს გადანაწილებული. 1166 00:57:49,040 --> 00:57:52,600 სხვაგან, დასალაგებლად მარცხენა ნახევარში, და მაშინ დასალაგებლად მარჯვენა ნახევარში, 1167 00:57:52,600 --> 00:57:54,140 და მაშინ შერწყმა. 1168 00:57:54,140 --> 00:57:56,979 >> ასე რომ, მიუხედავად იმისა, რომ როგორც ჩანს, მართლაც ადვილია, სინამდვილეში, ფიქრობს, რომ ეს არის 1169 00:57:56,979 --> 00:58:00,270 სახის რთული. იმის გამო, რომ თქვენ, როგორიცაა, ისე, რომ სახის გაშვებული თავად. 1170 00:58:00,270 --> 00:58:00,769 მარჯვენა? 1171 00:58:00,769 --> 00:58:02,430 ის გაშვებული თავად. 1172 00:58:02,430 --> 00:58:05,479 ასე რომ, ამ თვალსაზრისით, დავით შეეხო საფუძველზე უკან კლასში. 1173 00:58:05,479 --> 00:58:07,270 და ეს კონცეფცია ჩვენ ვსაუბრობთ მეტი. 1174 00:58:07,270 --> 00:58:11,430 ის, რომ, ამ ორი ხაზი აქ, რეალურად არის პროგრამა 1175 00:58:11,430 --> 00:58:13,860 ვეუბნებოდი, რომ აწარმოებს თავად სხვადასხვა შეყვანა. 1176 00:58:13,860 --> 00:58:17,230 ასე რომ, ვიდრე აწარმოებს თავად მთლიანად N ელემენტები, 1177 00:58:17,230 --> 00:58:20,530 შეგიძლიათ შესვენება მას შევიდა მარცხენა ნახევარში და მარჯვენა ნახევარში 1178 00:58:20,530 --> 00:58:22,680 და შემდეგ გაუშვით ერთხელ. 1179 00:58:22,680 --> 00:58:26,050 >> და მაშინ ჩვენ შევხედოთ მას ვიზუალურად, იმიტომ, რომ მე ვიზუალური მოსწავლეზე. 1180 00:58:26,050 --> 00:58:27,270 იგი მუშაობს უკეთესი ჩემთვის. 1181 00:58:27,270 --> 00:58:29,890 ასე რომ, ჩვენ შევხედოთ ვიზუალური მაგალითი აქ. 1182 00:58:29,890 --> 00:58:36,237 >> მოდით ვთქვათ, რომ ჩვენ გვაქვს მასივი, ექვსი ელემენტები, 3, 5, 2, 6, 4, 1, არ არის დახარისხებული. 1183 00:58:36,237 --> 00:58:37,820 ყველა უფლება, იქ არის ბევრი ამ გვერდზე. 1184 00:58:37,820 --> 00:58:43,179 ასე რომ, თუ თქვენ ბიჭები შეიძლება შევხედოთ პირველი ნაბიჯი აქ, 3, 5, 2, 6, 4, 1, 1185 00:58:43,179 --> 00:58:44,220 თქვენ შეგიძლიათ გაყოფილი ის ნახევარზე. 1186 00:58:44,220 --> 00:58:45,976 თქვენ გაქვთ 3, 5, 2, 6, 4, 1. 1187 00:58:45,976 --> 00:58:48,850 თქვენ იცით, რომ ეს aren't-- თქვენ არ ვიცი, თუ ისინი დახარისხებული თუ არა, 1188 00:58:48,850 --> 00:58:52,517 ასე რომ თქვენ გაქვთ არღვევს მათ ქვემოთ, ნახევარი, ნახევარი, ნახევარი, სანამ საბოლოოდ, 1189 00:58:52,517 --> 00:58:53,600 თქვენ გაქვთ მხოლოდ ერთი ელემენტი. 1190 00:58:53,600 --> 00:58:56,790 და ერთ ელემენტს ყოველთვის დალაგებულია, არა? 1191 00:58:56,790 --> 00:59:01,560 >> ჩვენ ვიცით, რომ 3, 5, 2, 4, 6, 1, თავად, დახარისხებული. 1192 00:59:01,560 --> 00:59:05,870 და ახლა ჩვენ შეგვიძლია ისინი უკან ერთად. 1193 00:59:05,870 --> 00:59:07,510 ასე რომ, ჩვენ ვიცით, 3, 5. 1194 00:59:07,510 --> 00:59:08,510 ჩვენ იმ ერთად. 1195 00:59:08,510 --> 00:59:09,617 ჩვენ ვიცით, რომ არის დახარისხებული. 1196 00:59:09,617 --> 00:59:10,450 2 ის ჯერ კიდევ არსებობს. 1197 00:59:10,450 --> 00:59:11,830 ჩვენ შეგვიძლია დააყენა 4 და 6 ერთად. 1198 00:59:11,830 --> 00:59:13,996 ჩვენ ვიცით, რომ დახარისხებული, ამიტომ ჩვენ რომ ერთად. 1199 00:59:13,996 --> 00:59:14,940 და 1 არ არის. 1200 00:59:14,940 --> 00:59:18,720 >> და მაშინ უბრალოდ შევხედოთ ამ ორი halves უფლება აქ. 1201 00:59:18,720 --> 00:59:21,300 თქვენ გაქვთ 3, 5, 2, 2, 3, 5. 1202 00:59:21,300 --> 00:59:23,465 შეგიძლიათ უბრალოდ შედარება ყველაფრის დასაწყისია. 1203 00:59:23,465 --> 00:59:26,340 იმის გამო, რომ თქვენ იცით, რომ ეს არის დახარისხებული და თქვენ იცით, რომ დახარისხებული. 1204 00:59:26,340 --> 00:59:29,360 ასე რომ, თქვენ კი არ უნდა შედარების 5, უბრალოდ შედარების 3. 1205 00:59:29,360 --> 00:59:32,070 და 2 ნაკლებია, ვიდრე 3, ასე თქვენ იცით, 2 უნდა წავიდეს ბოლომდე. 1206 00:59:32,070 --> 00:59:33,120 >> იგივე იქ. 1207 00:59:33,120 --> 00:59:34,740 1 უნდა წავიდეს აქ. 1208 00:59:34,740 --> 00:59:37,330 და მაშინ, როდესაც მიდიხარ დააყენა ის ორი ღირებულებებს ერთად, 1209 00:59:37,330 --> 00:59:39,950 თქვენ იცით, რომ ეს არის გადანაწილებული და თქვენ იცით, რომ დალაგებულია. 1210 00:59:39,950 --> 00:59:43,240 ასე რომ, 1 და 2, 1 2 დღეზე ნაკლები. 1211 00:59:43,240 --> 00:59:45,570 ეს ეუბნება, რომ 1 უნდა წავიდეს ბოლოს ეს 1212 00:59:45,570 --> 00:59:47,480 გარეშე კი შევხედავთ 3 ან 5. 1213 00:59:47,480 --> 00:59:50,100 და მაშინ 4, შეგიძლიათ მხოლოდ შეამოწმეთ, მიდის უფლება აქ. 1214 00:59:50,100 --> 00:59:51,480 თქვენ არ გაქვთ შევხედოთ 5. 1215 00:59:51,480 --> 00:59:52,570 იგივე 6. 1216 00:59:52,570 --> 00:59:55,860 თქვენ იცით, რომ 6-- ეს მხოლოდ არ უნდა იყოს ჩანდა. 1217 00:59:55,860 --> 00:59:57,870 >> ასე რომ, ამ გზით, თქვენ მხოლოდ გადარჩენის საკუთარ თავს 1218 00:59:57,870 --> 00:59:59,526 ბევრი ნაბიჯები, როდესაც თქვენ შედარებით. 1219 00:59:59,526 --> 01:00:02,150 თქვენ არ უნდა შეადაროთ ყველა ელემენტს წინააღმდეგ სხვა ელემენტებს. 1220 01:00:02,150 --> 01:00:05,230 თქვენ უბრალოდ შედარება წინააღმდეგ პირობა რომ თქვენ უნდა შეადაროთ ის წინააღმდეგ. 1221 01:00:05,230 --> 01:00:06,870 ასე რომ, ერთგვარი აბსტრაქტული ცნება. 1222 01:00:06,870 --> 01:00:10,540 არ აწუხებს, თუ ეს არ არის საკმაოდ დარტყმის უფლება არავის გაუკეთებია. 1223 01:00:10,540 --> 01:00:14,740 მაგრამ ზოგადად, ეს არის როგორ შერწყმა დალაგების მუშაობს. 1224 01:00:14,740 --> 01:00:17,750 კითხვები, სწრაფი კითხვები, სანამ გადავა? 1225 01:00:17,750 --> 01:00:18,550 ჰო. 1226 01:00:18,550 --> 01:00:22,230 >> აუდიტორია: ასე რომ თქვენ თქვით, რომ მიიღოს 1 და შემდეგ 4 და 6 1227 01:00:22,230 --> 01:00:23,860 და ამით მათ. 1228 01:00:23,860 --> 01:00:26,800 ასე რომ, არ არის those-- არ თქვენ ეძებს მათ 1229 01:00:26,800 --> 01:00:28,544 როგორც ცალკეული ელემენტები, არა როგორც მთელი? 1230 01:00:28,544 --> 01:00:29,210 Andi Peng: ჰო. 1231 01:00:29,210 --> 01:00:32,020 ასე რომ, რა ხდება არის, რომ თქვენ, ძირითადად, 1232 01:00:32,020 --> 01:00:33,650 ვქმნით ახალ მასივი. 1233 01:00:33,650 --> 01:00:36,690 ასე, რომ თქვენ იცით, რომ აქ, მე მაქვს ორი კოლექტორები ზომა 3, არა? 1234 01:00:36,690 --> 01:00:39,600 ასე, რომ თქვენ იცით, რომ ჩემი დახარისხებული მასივი უნდა ჰქონდეს ექვსი ელემენტები. 1235 01:00:39,600 --> 01:00:42,270 ასე, რომ თქვენ უბრალოდ შექმნათ ახალი თანხის მეხსიერება. 1236 01:00:42,270 --> 01:00:44,270 ასე რომ, თქვენ სახის მოსწონს უკვე არარაციონალური მეხსიერება, 1237 01:00:44,270 --> 01:00:46,186 მაგრამ, რომ არ აქვს მნიშვნელობა იმიტომ, რომ ეს იმდენად მცირე. 1238 01:00:46,186 --> 01:00:48,590 ასე, რომ თქვენ შევხედოთ 1 და გადავხედავთ 2. 1239 01:00:48,590 --> 01:00:50,770 და თქვენ იცით, რომ 1 ნაკლებია 2. 1240 01:00:50,770 --> 01:00:53,840 ასე, რომ თქვენ იცით, რომ 1 უნდა წავიდეს დასაწყისში ყველა იმ. 1241 01:00:53,840 --> 01:00:55,850 >> თქვენ კი არ უნდა შევხედოთ 3 და 5. 1242 01:00:55,850 --> 01:00:57,400 ასე რომ თქვენ იცით 1 მიდის იქ. 1243 01:00:57,400 --> 01:00:59,300 მაშინ ძირითადად chop off 1. 1244 01:00:59,300 --> 01:01:00,370 ეს, ისევე, როგორც მკვდარი ჩვენთვის. 1245 01:01:00,370 --> 01:01:03,690 მაშინ ჩვენ უბრალოდ 2, 3, 5, და მერე 4 და 6. 1246 01:01:03,690 --> 01:01:06,270 და მაშინ თქვენ იცით, რომ თქვენ შედარების 4 და 2, 1247 01:01:06,270 --> 01:01:07,560 oh, 2 უნდა წავიდეს იქ. 1248 01:01:07,560 --> 01:01:09,685 ასე, რომ თქვენ ვეცემით 2 ქვემოთ, თქვენ chop ეს off. 1249 01:01:09,685 --> 01:01:12,060 ასე რომ, თქვენ უბრალოდ უნდა 3 და 5 4 და 6. 1250 01:01:12,060 --> 01:01:14,650 თქვენ უბრალოდ შეინახოს ტყეში ეს off სანამ დააყენა მათ მასივი. 1251 01:01:14,650 --> 01:01:17,110 >> აუდიტორია: ასე რომ თქვენ მხოლოდ ყოველთვის შედარებით [INAUDIBLE]? 1252 01:01:17,110 --> 01:01:17,710 >> Andi Peng: ზუსტად. 1253 01:01:17,710 --> 01:01:19,590 ასე რომ, ამ მხრივ, თქვენ უბრალოდ შედარებით, არსებითად, 1254 01:01:19,590 --> 01:01:21,240 ერთი ნომერი, წინააღმდეგ მეორე ნომერი. 1255 01:01:21,240 --> 01:01:22,990 და იმიტომ, რომ თქვენ იცით, რომ ეს დახარისხებული, თქვენ 1256 01:01:22,990 --> 01:01:24,350 არ უნდა გაეცნონ ყველა ნომრები. 1257 01:01:24,350 --> 01:01:25,870 თქვენ უბრალოდ უნდა შევხედოთ პირველი. 1258 01:01:25,870 --> 01:01:27,582 და მაშინ თქვენ შეგიძლიათ უბრალოდ plop მათ ქვემოთ, იმიტომ, რომ თქვენ იცით, 1259 01:01:27,582 --> 01:01:29,640 მათ ეკუთვნის, სადაც ისინი უნდა ეკუთვნოდეს. 1260 01:01:29,640 --> 01:01:31,030 ჰო. 1261 01:01:31,030 --> 01:01:32,920 კარგი კითხვაა. 1262 01:01:32,920 --> 01:01:35,290 >> და მაშინ, თუ თქვენ არის ცოტა ამბიციური, 1263 01:01:35,290 --> 01:01:38,660 მოგერიდებათ გადავხედავთ ამ კოდი. 1264 01:01:38,660 --> 01:01:40,680 ეს არის რეალურად ფიზიკური განხორციელება 1265 01:01:40,680 --> 01:01:42,150 როგორ ჩვენ წერენ შერწყმა დალაგების. 1266 01:01:42,150 --> 01:01:44,070 და თქვენ შეგიძლიათ ნახოთ, ძალიან მოკლე. 1267 01:01:44,070 --> 01:01:46,310 მაგრამ იდეები უკან ეს არის საკმაოდ რთული. 1268 01:01:46,310 --> 01:01:50,865 ასე რომ, თუ თქვენ გრძნობს, როგორც ხატვის ამ out თქვენს დავალებას დღეს, მოგერიდებათ. 1269 01:01:50,865 --> 01:01:54,050 1270 01:01:54,050 --> 01:01:54,740 >> OK. 1271 01:01:54,740 --> 01:01:58,070 ასე რომ, დავითი წავიდა ეს ლექცია. 1272 01:01:58,070 --> 01:02:00,660 რა არის საუკეთესო შემთხვევაში runtimes, უარეს შემთხვევაში runtimes, 1273 01:02:00,660 --> 01:02:05,680 და მოსალოდნელი runtimes შერწყმა დალაგების? 1274 01:02:05,680 --> 01:02:07,260 რამდენიმე წამი ვფიქრობ. 1275 01:02:07,260 --> 01:02:11,198 ეს არის საკმაოდ რთული, მაგრამ სახის ინტუიციური თუ ფიქრობთ, რომ ეს. 1276 01:02:11,198 --> 01:02:20,090 1277 01:02:20,090 --> 01:02:23,054 ყველა უფლება. 1278 01:02:23,054 --> 01:02:25,269 >> აუდიტორია: უარეს შემთხვევაში ო ჟურნალი ო? 1279 01:02:25,269 --> 01:02:26,060 Andi Peng: ზუსტად. 1280 01:02:26,060 --> 01:02:29,380 და რატომ არის იგი N შეხვიდეთ n. 1281 01:02:29,380 --> 01:02:32,230 >> აუდიტორია: არის თუ არა ეს იმიტომ, რომ ეს ხდება exponentially უფრო სწრაფად, 1282 01:02:32,230 --> 01:02:35,390 ასე რომ, როგორც ფუნქცია, რომელიც ნაცვლად უბრალოდ მყოფი n 1283 01:02:35,390 --> 01:02:37,529 კვადრატში ან რამე? 1284 01:02:37,529 --> 01:02:38,320 Andi Peng: ზუსტად. 1285 01:02:38,320 --> 01:02:40,750 ასე რომ, თუ რატომ runtime ამ არის N შესვლა 1286 01:02:40,750 --> 01:02:44,310 n არის იმიტომ, რომ ის, რაც ხარ აკეთებს ყველა ეს ნაბიჯი? 1287 01:02:44,310 --> 01:02:46,190 თქვენ მხოლოდ ტყეში ის ნახევარზე, არა? 1288 01:02:46,190 --> 01:02:48,750 ასე რომ, როდესაც ჩვენ ვაკეთებთ შესვლა, რომ ყველა ის აკეთებს 1289 01:02:48,750 --> 01:02:53,150 არის გამყოფი პრობლემა ნახევარი, ნახევარი, ნახევარი, უფრო halves. 1290 01:02:53,150 --> 01:02:56,430 ამ მხრივ, შეგიძლიათ სახის საქართველოს აღმოფხვრას ხაზოვანი მოდელი 1291 01:02:56,430 --> 01:02:57,510 რომ ჩვენ უკვე გამოყენებით. 1292 01:02:57,510 --> 01:03:00,254 იმის გამო, რომ, როდესაც თქვენ chop რამ ნახევარი, ეს ჟურნალი. 1293 01:03:00,254 --> 01:03:02,420 ეს მხოლოდ მათემატიკური გზა წარმოადგენს იგი. 1294 01:03:02,420 --> 01:03:06,310 >> და ბოლოს, ბოლოს, თქვენ მხოლოდ მიღების ერთი ბოლო გადის 1295 01:03:06,310 --> 01:03:07,930 იმისათვის, რომ ყველა მათგანი, რათა, არა? 1296 01:03:07,930 --> 01:03:10,330 ასე რომ, თუ თქვენ უბრალოდ უნდა შეამოწმეთ ერთი რამ, რომ ო. 1297 01:03:10,330 --> 01:03:13,420 ასე რომ, თქვენ სახის გამრავლებით ორი ერთად. 1298 01:03:13,420 --> 01:03:17,660 ასე რომ, როგორც თქვენ მოხვდით, რომ საბოლოო შევამოწმოთ n ქვემოთ აქ ჟურნალი n 1299 01:03:17,660 --> 01:03:18,390 აქ. 1300 01:03:18,390 --> 01:03:21,060 და თუ გავამრავლებთ მათ, რომ N შეხვიდეთ n. 1301 01:03:21,060 --> 01:03:26,100 >> ასე რომ, საუკეთესო შემთხვევაში და უარეს საქმე და ელოდებიან და ყველა N შეხვიდეთ n. 1302 01:03:26,100 --> 01:03:27,943 ეს არის ასევე როგორც სხვა სახის. 1303 01:03:27,943 --> 01:03:30,090 ეს იგივეა, შერჩევის დალაგების იმ გაგებით, რომ ის 1304 01:03:30,090 --> 01:03:32,131 არ აქვს მნიშვნელობა რა თქვენი სიაში არის, ის უბრალოდ აპირებს 1305 01:03:32,131 --> 01:03:34,801 უნდა გავაკეთოთ იგივე ყოველ ერთ დროს. 1306 01:03:34,801 --> 01:03:35,300 OK. 1307 01:03:35,300 --> 01:03:39,950 ასე რომ, როგორც ბიჭებს ვხედავ, მიუხედავად იმისა, სახის, ჩვენ წავიდა through-- n 1308 01:03:39,950 --> 01:03:41,660 კვადრატი, ეს არ არის ძალიან ეფექტური. 1309 01:03:41,660 --> 01:03:47,060 და მაშინაც კი, ამ N ჟურნალი ო არ არის ყველაზე ეფექტური. 1310 01:03:47,060 --> 01:03:49,720 თუ ბიჭები არიან ცნობისმოყვარენი, არსებობს ერთგვარი მექანიზმები 1311 01:03:49,720 --> 01:03:54,310 რომ იმდენად ეფექტური, რომ ისინი თითქმის არსებითად ბინა runtime. 1312 01:03:54,310 --> 01:03:55,420 >> თქვენ მოხვდით გარკვეული log n ს. 1313 01:03:55,420 --> 01:03:58,190 თქვენ მოხვდით გარკვეული ჟურნალი ჟურნალი ო ს. 1314 01:03:58,190 --> 01:04:00,330 ჩვენ არ შევეხო მათ ამ კლასში ახლავე. 1315 01:04:00,330 --> 01:04:02,663 მაგრამ, თუ ბიჭები არიან ცნობისმოყვარენი, მოგერიდებათ google, რა არის 1316 01:04:02,663 --> 01:04:04,392 ყველაზე ეფექტური დახარისხება მექანიზმები. 1317 01:04:04,392 --> 01:04:06,350 მე არ ვიცი, არსებობს მართლაც სასაცილოა პირობა, 1318 01:04:06,350 --> 01:04:09,860 მოსწონს არსებობს გარკვეული ნამდვილად სასაცილო პირობა, რომ ხალხი. 1319 01:04:09,860 --> 01:04:12,210 და თქვენ მაინტერესებს, როგორ ოდესმე ეგონა, რომ. 1320 01:04:12,210 --> 01:04:15,730 ასე რომ, google, თუ თქვენ გაქვთ რაიმე სათადარიგო დროს,, რა სასაცილო გზა 1321 01:04:15,730 --> 01:04:17,730 რომ ადამიანები, ისევე როგორც ეფექტური ways-- ადამიანი 1322 01:04:17,730 --> 01:04:20,371 უკვე შეუძლია განახორციელოს ჯიშები. 1323 01:04:20,371 --> 01:04:20,870 OK. 1324 01:04:20,870 --> 01:04:22,880 და აქ მხოლოდ პატარა მოსახერხებელი გრაფიკი. 1325 01:04:22,880 --> 01:04:26,850 მე ვიცი, რომ ყველა თქვენ, მანამდე ინტელექტუალური 0, იქნება თქვენს ოთახში ალბათ ცდილობს 1326 01:04:26,850 --> 01:04:27,960 გვემახსოვრება, რომ. 1327 01:04:27,960 --> 01:04:30,940 ასე რომ, ლამაზი იქ თქვენ ბიჭები. 1328 01:04:30,940 --> 01:04:37,120 უბრალოდ არ უნდა დაგვავიწყდეს, რომ ლოგიკა, რომელიც made-- ამიტომ, ის ნომრები ხდება. 1329 01:04:37,120 --> 01:04:39,870 თუ თქვენ ყოველთვის დაკარგა, უბრალოდ დარწმუნდით, რომ თქვენ იცით, თუ რა სახის არის. 1330 01:04:39,870 --> 01:04:40,820 და თქვენ შეგიძლიათ აწარმოებს მეშვეობით მათ თქვენი გონება 1331 01:04:40,820 --> 01:04:42,903 გაერკვნენ, თუ რატომ იმ პასუხი იმ პასუხებს. 1332 01:04:42,903 --> 01:04:46,250 1333 01:04:46,250 --> 01:04:47,600 >> ყველა უფლება. 1334 01:04:47,600 --> 01:04:49,680 ასე რომ, ჩვენ ვაპირებთ გადაადგილება წლის ბოლოს, ძებნას. 1335 01:04:49,680 --> 01:04:51,638 იმის გამო, რომ, როგორც იმ თქვენ, ვინც წაიკითხა pset, 1336 01:04:51,638 --> 01:04:55,175 სამძებრო ასევე ნაწილი ამ კვირის პრობლემა კომპლექტი. 1337 01:04:55,175 --> 01:04:57,300 თქვენ მოგეთხოვებათ განახორციელოს ორი სახის ეძებს. 1338 01:04:57,300 --> 01:05:00,070 ერთი არის წრფივი ძიება და ერთი არის ორობითი ძებნა. 1339 01:05:00,070 --> 01:05:01,760 >> ასე რომ, ხაზოვანი ძებნა საკმაოდ მარტივია. 1340 01:05:01,760 --> 01:05:04,070 თქვენ უბრალოდ უნდა ვეძებოთ ელემენტი სიაში თუ თქვენ მიიღოს იგი. 1341 01:05:04,070 --> 01:05:05,444 თქვენ უბრალოდ უნდა iterate მეშვეობით. 1342 01:05:05,444 --> 01:05:08,170 და თუ ეს უდრის რაღაც, თქვენ შეგიძლიათ დააბრუნებს მას, არა? 1343 01:05:08,170 --> 01:05:10,890 მაგრამ ერთი, რომ ჩვენ ყველაზე დაინტერესებული ვსაუბრობთ 1344 01:05:10,890 --> 01:05:14,550 არის ორობითი ძებნა, უფლება, რომელიც არის გათიშე და დაიპყროთ მექანიზმი, რომელიც 1345 01:05:14,550 --> 01:05:18,190 დავით დემონსტრირება იყო ლექცია. 1346 01:05:18,190 --> 01:05:20,810 >> დამახსოვრება სატელეფონო წიგნი მაგალითად რომ ინახავს აღზრდა, 1347 01:05:20,810 --> 01:05:23,960 ერთი, რომ სახის იბრძოდა ცოტა გასულ წელს, 1348 01:05:23,960 --> 01:05:27,530 სადაც თქვენ დაყოს პრობლემა ნახევარი, ნახევარი, ნახევარი, ისევ და ისევ, 1349 01:05:27,530 --> 01:05:30,730 სანამ თქვენთვის, თუ რას ეძებს? 1350 01:05:30,730 --> 01:05:33,727 და თქვენ მოხვდით runtime, რომელიც ასევე. 1351 01:05:33,727 --> 01:05:35,810 და თქვენ შეგიძლიათ ნახოთ, ეს მნიშვნელოვნად უფრო ეფექტური 1352 01:05:35,810 --> 01:05:39,080 ვიდრე ნებისმიერი სხვა ტიპის ძიება. 1353 01:05:39,080 --> 01:05:41,880 >> ასე რომ, ისე, რომ ჩვენ წავიდოდა შესახებ განხორციელების ორობითი ძებნა 1354 01:05:41,880 --> 01:05:46,510 არის, თუ ჩვენ გვქონდა მასივი, ინდექსი 0 6, შვიდი ელემენტები, 1355 01:05:46,510 --> 01:05:49,790 ჩვენ შეგვიძლია შუა, right-- ვწუხვარ, თუ ჩვენს კითხვაზე, პირველი 1356 01:05:49,790 --> 01:05:53,840 თუ ჩვენ გვინდა ვთხოვოთ შეკითხვას, აკეთებს მასივი შეიცავს ელემენტს 7, 1357 01:05:53,840 --> 01:05:56,840 ცხადია, უკვე ადამიანებს, და რომელსაც ასეთი პატარა მასივი, ადვილი ჩვენთვის 1358 01:05:56,840 --> 01:05:58,210 ვთქვა, დიახ. 1359 01:05:58,210 --> 01:06:05,750 მაგრამ გზა განახორციელოს ორობითი ძიება იქნებოდა მოსაძებნად შუა. 1360 01:06:05,750 --> 01:06:08,020 >> ჩვენ ვიცით, რომ ინდექსი 3 შუა, იმიტომ, რომ ჩვენ 1361 01:06:08,020 --> 01:06:09,270 ვიცი, არსებობს შვიდი ელემენტები. 1362 01:06:09,270 --> 01:06:10,670 რა 7 გაყოფილი 2? 1363 01:06:10,670 --> 01:06:12,850 შეგიძლიათ chop off, რომ დამატებით 1. 1364 01:06:12,850 --> 01:06:14,850 თქვენ მოხვდით 3 შუა. 1365 01:06:14,850 --> 01:06:17,590 ასე რომ, მასივი 3 = 7? 1366 01:06:17,590 --> 01:06:18,900 ეს არ არის, უფლება? 1367 01:06:18,900 --> 01:06:21,050 მაგრამ ჩვენ შეგვიძლია ამის გაკეთება რამდენიმე ამოწმებს. 1368 01:06:21,050 --> 01:06:25,380 არის მასივი 3 7-ზე ნაკლები ან არის მასივი 3 მეტია 7? 1369 01:06:25,380 --> 01:06:27,240 >> და ჩვენ ვიცით, რომ ეს 7-ზე ნაკლები. 1370 01:06:27,240 --> 01:06:30,259 ჩვენ ვიცით, რომ, ოჰ, ეს უნდა არ უნდა იყოს მარცხენა ნახევარში. 1371 01:06:30,259 --> 01:06:32,300 ჩვენ ვიცით, რომ ეს უნდა იყოს მარჯვენა ნახევარში, არა? 1372 01:06:32,300 --> 01:06:34,662 ასე რომ ჩვენ შეგვიძლია უბრალოდ Chop off ნახევარი მასივი. 1373 01:06:34,662 --> 01:06:36,370 ჩვენ კი არ უნდა შევხედოთ მას აღარ. 1374 01:06:36,370 --> 01:06:38,711 იმიტომ, რომ ჩვენ ვიცით, რომ ნახევარი ჩვენი პრობლემა 1375 01:06:38,711 --> 01:06:41,210 ჩვენ ვიცით, რომ პასუხი არის მარჯვენა ნახევარში ჩვენი პრობლემა. 1376 01:06:41,210 --> 01:06:42,580 ასე რომ, ჩვენ უბრალოდ შევხედოთ, რომ ახლა. 1377 01:06:42,580 --> 01:06:44,860 >> ასე რომ, ახლა ჩვენ შევხედოთ შუა რა დარჩა. 1378 01:06:44,860 --> 01:06:46,880 ეს მაჩვენებელი 5. 1379 01:06:46,880 --> 01:06:50,200 ჩვენ იგივე გამშვები ერთხელ და ჩვენ ვხედავთ, რომ ეს არის პატარა. 1380 01:06:50,200 --> 01:06:52,050 ასე შევხედავთ, რომ მარცხნივ რომ. 1381 01:06:52,050 --> 01:06:53,430 და მაშინ ჩვენ ვხედავთ, რომ ქვითარი. 1382 01:06:53,430 --> 01:06:57,600 არის მასივი ღირებულება ინდექსი 4 = 7? 1383 01:06:57,600 --> 01:06:58,260 ეს არის. 1384 01:06:58,260 --> 01:07:03,580 ასე რომ, ჩვენ შეიძლება დაბრუნდეს ჭეშმარიტი, რადგან აღმოჩნდა, მნიშვნელობა ჩვენს სიაში. 1385 01:07:03,580 --> 01:07:06,738 არა ისე, მე გაიარა რომ აზრი, რომ ყველას? 1386 01:07:06,738 --> 01:07:08,760 OK. 1387 01:07:08,760 --> 01:07:11,670 მე მივცემ თქვენ ბიჭები შესაძლოა, ისევე, სამი, ოთხი წუთის გაერკვნენ 1388 01:07:11,670 --> 01:07:13,270 როგორ Pseudocode ეს. 1389 01:07:13,270 --> 01:07:18,070 >> ასე რომ, წარმოიდგინეთ მე გთხოვეთ დაწერა ფუნქცია მოუწოდა ძებნა (), რომელიც დაბრუნდა 1390 01:07:18,070 --> 01:07:20,640 მნიშვნელობა, ლოგიკური მნიშვნელობა, რომ იყო true ან false, როგორიცაა, 1391 01:07:20,640 --> 01:07:22,970 ასეა თუ ი მნიშვნელობა, ცრუ თუ თქვენ არ. 1392 01:07:22,970 --> 01:07:25,230 და მაშინ იყო გავიდა ღირებულება თქვენ 1393 01:07:25,230 --> 01:07:28,410 ეძებს შევიდა ღირებულებები, რომელიც არის მასივი რა, მე აუცილებლად დააყენა 1394 01:07:28,410 --> 01:07:29,410 რომ არასწორი ადგილი. 1395 01:07:29,410 --> 01:07:29,580 OK. 1396 01:07:29,580 --> 01:07:31,829 Anyways, რომ უნდა ჰქონდეს უკვე მარჯვნივ ღირებულებებს. 1397 01:07:31,829 --> 01:07:36,280 და მაშინ int n რაოდენობის ელემენტები, რომ მასივი. 1398 01:07:36,280 --> 01:07:39,430 როგორ წავიდეთ შესახებ ცდილობს რომ Pseudocode, რომ პრობლემა? 1399 01:07:39,430 --> 01:07:41,630 მე მივცემ თქვენ ბიჭები მოსწონს სამ წუთში უნდა გააკეთოს, რომ. 1400 01:07:41,630 --> 01:08:00,137 1401 01:08:00,137 --> 01:08:02,595 არა, მე ვფიქრობ, რომ only-- ჰო, არსებობს ერთი სწორი აქ. 1402 01:08:02,595 --> 01:08:03,261 აუდიტორია: შემიძლია? 1403 01:08:03,261 --> 01:08:04,388 Andi Peng: ჰო, მე თქვენ. 1404 01:08:04,388 --> 01:08:09,410 1405 01:08:09,410 --> 01:08:11,050 ის არის, რომ სამუშაო? 1406 01:08:11,050 --> 01:08:12,290 OK, მაგარი. 1407 01:08:12,290 --> 01:10:43,590 1408 01:10:43,590 --> 01:10:44,720 >> OK. 1409 01:10:44,720 --> 01:10:47,630 ყველა უფლება ბიჭები, ჩვენ აპირებს გაკონტროლების იგი. 1410 01:10:47,630 --> 01:10:49,730 OK. 1411 01:10:49,730 --> 01:10:54,020 ასე რომ, ვივარაუდოთ, რომ ჩვენ მივიღეთ ამ ლამაზი პატარა მასივი n ღირებულებების იგი. 1412 01:10:54,020 --> 01:10:55,170 მე არ შევაჩერო ხაზები. 1413 01:10:55,170 --> 01:10:58,649 მაგრამ როგორ ჩვენ შესახებ ცდილობს დაწეროს ეს? 1414 01:10:58,649 --> 01:11:00,440 ვინმეს სურს მომეცი პირველი ხაზი? 1415 01:11:00,440 --> 01:11:02,814 თუ გსურთ, რომ მომეცი პირველი ხაზი ამ pseudocode. 1416 01:11:02,814 --> 01:11:06,563 1417 01:11:06,563 --> 01:11:08,430 >> აუდიტორია: [INAUDIBLE] 1418 01:11:08,430 --> 01:11:10,138 აუდიტორია: თქვენ მინდა iterate მეშვეობით 1419 01:11:10,138 --> 01:11:11,094 აუდიტორია: კიდევ ერთი for loop? 1420 01:11:11,094 --> 01:11:11,760 აუდიტორია: --for. 1421 01:11:11,760 --> 01:11:15,880 1422 01:11:15,880 --> 01:11:17,780 >> Andi Peng: ასე რომ, ეს ერთი ცოტა სახიფათო. 1423 01:11:17,780 --> 01:11:23,130 ვფიქრობ დაახლოებით გსურთ შენარჩუნება გაშვებული ამ მარყუჟის 1424 01:11:23,130 --> 01:11:27,950 უსასრულოდ სანამ, როდესაც? 1425 01:11:27,950 --> 01:11:30,819 >> აუდიტორია: სანამ [INAUDIBLE] მნიშვნელობა უდრის, რომ მნიშვნელობა. 1426 01:11:30,819 --> 01:11:31,610 Andi Peng: ზუსტად. 1427 01:11:31,610 --> 01:11:33,900 ასე რომ, შეგიძლიათ რეალურად უბრალოდ წერა ჩვენ შეგვიძლია კიდევ გამარტივება უფრო. 1428 01:11:33,900 --> 01:11:35,630 ჩვენ შეგვიძლია უბრალოდ, ხოლო მარყუჟის, არა? 1429 01:11:35,630 --> 01:11:39,380 ასე რომ, შეგიძლიათ უბრალოდ მარყუჟის ჩვენ ვიცით, რომ ეს ცოტა ხნით. 1430 01:11:39,380 --> 01:11:42,850 მაგრამ ახლა, მე ვაპირებ ამბობენ, რომ "მარყუჟი" - მეშვეობით, თუ რა? 1431 01:11:42,850 --> 01:11:46,640 Loop until-- რა არის ჩვენი დამთავრებული მდგომარეობა? 1432 01:11:46,640 --> 01:11:47,510 მე ვფიქრობ, რომ მე მოვისმინე. 1433 01:11:47,510 --> 01:11:48,530 გავიგე ვინმე ვთქვათ. 1434 01:11:48,530 --> 01:11:51,255 >> აუდიტორია: Values ​​ტოლია შუა. 1435 01:11:51,255 --> 01:11:52,255 Andi Peng: ამბობენ, რომ ეს კიდევ ერთხელ. 1436 01:11:52,255 --> 01:11:54,470 აუდიტორია: ან, სანამ მნიშვნელობა თქვენ ეძებს 1437 01:11:54,470 --> 01:11:58,470 არის ტოლი შუა ღირებულება. 1438 01:11:58,470 --> 01:12:00,280 >> Andi Peng: მერე რა, რომ არ არსებობს? 1439 01:12:00,280 --> 01:12:03,113 რა მოხდება, თუ მნიშვნელობა თქვენ ეძებს ამისთვის არ არის რეალურად ამ მასივი? 1440 01:12:03,113 --> 01:12:05,890 აუდიტორია: თქვენ დაბრუნდება 1. 1441 01:12:05,890 --> 01:12:08,850 >> Andi Peng: მაგრამ რა გვინდა მარყუჟი სანამ, თუ ჩვენ გვაქვს მდგომარეობა? 1442 01:12:08,850 --> 01:12:09,350 ჰო. 1443 01:12:09,350 --> 01:12:11,239 >> აუდიტორია: სანამ არსებობს მხოლოდ ერთი მნიშვნელობა? 1444 01:12:11,239 --> 01:12:13,530 Andi Peng: თქვენ შეგიძლიათ loop until-- ასე რომ თქვენ იცით, რომ თქვენ 1445 01:12:13,530 --> 01:12:15,714 აპირებს აქვს მაქსიმალური ღირებულება, არა? 1446 01:12:15,714 --> 01:12:18,130 და თქვენ იცით, რომ თქვენ აპირებთ აქვს წთ ღირებულება, არა? 1447 01:12:18,130 --> 01:12:20,379 იმის გამო, ასევე, რომ რაღაც დამავიწყდა იმის თქმა ადრე, 1448 01:12:20,379 --> 01:12:22,640 რომ ის, რაც არის კრიტიკული ორობითი ძებნა 1449 01:12:22,640 --> 01:12:24,182 ის არის, რომ თქვენს მასივი უკვე დახარისხებული. 1450 01:12:24,182 --> 01:12:26,973 იმის გამო, რომ სხვა გზა არ აკეთებს ამ შემთხვევაში ისინი უბრალოდ შემთხვევითი ღირებულებებს. 1451 01:12:26,973 --> 01:12:29,190 თუ თქვენ არ იცით, თუ ერთი არის უფრო დიდი, ვიდრე სხვა, არა? 1452 01:12:29,190 --> 01:12:32,720 >> ასე, რომ თქვენ იცით, რომ თქვენი max და თქვენი წთ აქ ვართ, არა? 1453 01:12:32,720 --> 01:12:35,590 თუ თქვენ აპირებთ უნდა მორგება თქვენი max თქვენს წთ და mid-- 1454 01:12:35,590 --> 01:12:38,470 მოდით უბრალოდ ვივარაუდოთ, თქვენი შუა მნიშვნელობა სწორედ აქ 1455 01:12:38,470 --> 01:12:43,910 თქვენ აპირებს ძირითადად loop სანამ თქვენი მინიმუმი 1456 01:12:43,910 --> 01:12:47,510 დაახლოებით იგივე, რაც თქვენს max, მარჯვნივ, ან თუ თქვენი მაქსიმალური არის იგივე, რაც თქვენი წთ. 1457 01:12:47,510 --> 01:12:48,040 მარჯვენა? 1458 01:12:48,040 --> 01:12:51,340 იმის გამო, რომ როცა ეს მოხდება, თქვენ იცით, რომ თქვენ საბოლოოდ მოხვდა იგივე ღირებულება. 1459 01:12:51,340 --> 01:12:59,135 ასე რომ გსურთ loop სანამ თქვენი წთ ნაკლებია ან ტოლი oops, 1460 01:12:59,135 --> 01:13:01,510 არა ნაკლები ან ტოლია სხვა გზა around-- max არის. 1461 01:13:01,510 --> 01:13:15,110 1462 01:13:15,110 --> 01:13:16,160 >> იცოდით, რომ აზრი? 1463 01:13:16,160 --> 01:13:18,810 მე მივიღე რამდენიმე ცდილობს, რომ უფლება. 1464 01:13:18,810 --> 01:13:21,869 მაგრამ loop სანამ თქვენი max მნიშვნელობა არსებითად თითქმის ნაკლები 1465 01:13:21,869 --> 01:13:23,410 მეტი ან ტოლია თქვენი მინიმალური, არა? 1466 01:13:23,410 --> 01:13:25,201 ეს მაშინ, როდესაც თქვენ იცით, რომ თქვენ თანხვედრა. 1467 01:13:25,201 --> 01:13:29,290 აუდიტორია: როცა გვინდა თქვენი მაქსიმალური ღირებულება იქნება ნაკლები მინიმალური? 1468 01:13:29,290 --> 01:13:31,040 Andi Peng: თუ თქვენ გაქვთ მორგება, რომელიც 1469 01:13:31,040 --> 01:13:32,380 არის ის, რაც ჩვენ ვაპირებთ უნდა აკეთებს ამ. 1470 01:13:32,380 --> 01:13:33,460 ამას რამე აზრი აქვს? 1471 01:13:33,460 --> 01:13:35,750 მინიმალური და მაქსიმალური არის მხოლოდ რიცხვებით, რომ ჩვენ, ალბათ, 1472 01:13:35,750 --> 01:13:39,260 აპირებს შევქმნა შენარჩუნება ტრეკზე სადაც ჩვენ ვეძებთ. 1473 01:13:39,260 --> 01:13:41,790 იმის გამო, რომ მასივი არსებობს მიუხედავად იმისა, თუ რას ვაკეთებთ ჩვენ. 1474 01:13:41,790 --> 01:13:45,030 ისევე, როგორც ჩვენ, ფაქტობრივად, არ ფიზიკურად chopping off მასივი, არა? 1475 01:13:45,030 --> 01:13:47,261 ჩვენ უბრალოდ მორგება სადაც ჩვენ ვეძებთ. 1476 01:13:47,261 --> 01:13:48,136 ამას რამე აზრი აქვს? 1477 01:13:48,136 --> 01:13:48,472 >> აუდიტორია: Yeah. 1478 01:13:48,472 --> 01:13:49,110 >> Andi Peng: OK. 1479 01:13:49,110 --> 01:13:57,090 ასე რომ თუ ეს პირობა ჩვენი მარყუჟის, რა გვინდა შიგნით ამ loop? 1480 01:13:57,090 --> 01:13:58,700 რას აპირებს იყოს სურვილს? 1481 01:13:58,700 --> 01:14:02,390 ასე რომ, ახლა, ჩვენ მივიღეთ მაქსიმალური და წუთი, მარჯვენა, 1482 01:14:02,390 --> 01:14:04,962 ალბათ ის აქ სადღაც. 1483 01:14:04,962 --> 01:14:07,170 ჩვენ ვაპირებთ, რომ, ალბათ, სურს მოძიების შუა, არა? 1484 01:14:07,170 --> 01:14:08,450 როგორ მივდივართ უნდა იყოს შევძლოთ შუა? 1485 01:14:08,450 --> 01:14:09,491 რა არის mathematical-- 1486 01:14:09,491 --> 01:14:11,079 აუდიტორია: Max პლუს წთ გაყოფილი 2. 1487 01:14:11,079 --> 01:14:11,870 Andi Peng: ზუსტად. 1488 01:14:11,870 --> 01:14:20,300 1489 01:14:20,300 --> 01:14:21,620 ამას რამე აზრი აქვს? 1490 01:14:21,620 --> 01:14:25,780 და ბიჭები, თუ რატომ ეს არ არის მხოლოდ გამოიყენოს ამიტომ, ჩვენ გავაკეთეთ ეს 1491 01:14:25,780 --> 01:14:27,850 ნაცვლად აკეთებს უბრალოდ ო იყოფა 2? 1492 01:14:27,850 --> 01:14:30,310 ეს იმიტომ, რომ n არის ღირებულება რომ აპირებს იგივე რჩება. 1493 01:14:30,310 --> 01:14:30,979 მარჯვენა? 1494 01:14:30,979 --> 01:14:34,020 მაგრამ, როგორც ჩვენ შეცვალოს ჩვენი მინიმალური და მაქსიმალური ღირებულებები, ისინი აპირებენ, რომ შეიცვალოს. 1495 01:14:34,020 --> 01:14:36,040 ამის შედეგად, ჩვენი საშუალო შეიცვლება ძალიან. 1496 01:14:36,040 --> 01:14:37,873 ასე რომ, რატომ გვინდა, უნდა გავაკეთოთ ეს უფლება აქ. 1497 01:14:37,873 --> 01:14:38,510 OK. 1498 01:14:38,510 --> 01:14:41,600 >> და შემდეგ, ახლა, რომ ჩვენ აღმოვაჩინეთ our-- yeah. 1499 01:14:41,600 --> 01:14:44,270 >> აუდიტორია: უბრალოდ სწრაფი კითხვა როცა ამბობენ, მინ და მაქს, 1500 01:14:44,270 --> 01:14:46,410 ჩვენ ვთქვათ, რომ ეს უკვე გადანაწილებული? 1501 01:14:46,410 --> 01:14:48,400 >> Andi Peng: ჰო, ფაქტიურად წინაპირობა ორობითი ძებნა, 1502 01:14:48,400 --> 01:14:49,816 რომ თქვენ უნდა იცოდეს, ეს დახარისხებული. 1503 01:14:49,816 --> 01:14:53,660 სწორედ ამიტომ ერთგვარი, თქვენ დაწეროთ თქვენი პრობლემა კომპლექტი სანამ თქვენი ორობითი ძებნა. 1504 01:14:53,660 --> 01:14:55,910 OK. 1505 01:14:55,910 --> 01:14:58,876 ასე, რომ ახლა ჩვენ ვიცით, სადაც ჩვენი შუაში არის, რა გინდა აქ? 1506 01:14:58,876 --> 01:15:01,789 1507 01:15:01,789 --> 01:15:04,319 >> აუდიტორია: ჩვენ გვინდა, რომ შეადაროთ რომ მეორე. 1508 01:15:04,319 --> 01:15:05,110 Andi Peng: ზუსტად. 1509 01:15:05,110 --> 01:15:12,280 ასე, რომ თქვენ ვაპირებთ შედარების შუა ღირებულება, არა? 1510 01:15:12,280 --> 01:15:14,900 1511 01:15:14,900 --> 01:15:18,670 და რა, რომ გითხრათ, ჩვენს როდესაც ჩვენ შედარება? 1512 01:15:18,670 --> 01:15:22,226 რა გვინდა ჩვენ უნდა გავაკეთოთ შემდეგ? 1513 01:15:22,226 --> 01:15:25,389 >> აუდიტორია: თუ ღირებულება არის დიდი ვიდრე შუა, ჩვენ გვინდა, მოიკვეთე იგი. 1514 01:15:25,389 --> 01:15:26,180 Andi Peng: ზუსტად. 1515 01:15:26,180 --> 01:15:33,940 ასე რომ, თუ ღირებულება არის დიდი ვიდრე შუა, ჩვენ 1516 01:15:33,940 --> 01:15:36,550 აპირებს მინდა, რომ შეიცვალოს ეს მინიმალური და maxes, არა? 1517 01:15:36,550 --> 01:15:38,980 რა გვინდა ჩვენ, რომ შეიცვალოს? 1518 01:15:38,980 --> 01:15:42,145 ასე რომ, თუ ჩვენ ვიცით, მნიშვნელობა სადღაც აქ, რას ჩვენ შეცვალოს? 1519 01:15:42,145 --> 01:15:44,758 ჩვენ გვინდა, რომ ჩვენი მინიმალური უნდა იყოს შუა, არა? 1520 01:15:44,758 --> 01:15:49,420 1521 01:15:49,420 --> 01:15:54,292 და მერე სხვას, თუ ის ამ ნახევარი, რა გვინდა, რომ შეიცვალოს? 1522 01:15:54,292 --> 01:15:55,306 >> აუდიტორია: თქვენი მაქსიმალური. 1523 01:15:55,306 --> 01:15:55,972 Andi Peng: ჰო. 1524 01:15:55,972 --> 01:16:02,597 1525 01:16:02,597 --> 01:16:04,680 და მაშინ თქვენ უბრალოდ აპირებს შენარჩუნება looping, არა? 1526 01:16:04,680 --> 01:16:08,920 იმის გამო, რომ მას შემდეგ, რაც ერთ-ერთი მცდელობაა მეშვეობით, თქვენ მოხვდით max აქ. 1527 01:16:08,920 --> 01:16:10,760 და მაშინ ხელახლა გადათვლა შუა რიცხვებში. 1528 01:16:10,760 --> 01:16:11,990 და შემდეგ შეგიძლიათ შეადაროთ. 1529 01:16:11,990 --> 01:16:14,766 და თქვენ შენარჩუნება აპირებს სანამ წთ და maxes 1530 01:16:14,766 --> 01:16:15,890 არსებითად თანხვედრა. 1531 01:16:15,890 --> 01:16:17,890 და ეს მაშინ, როდესაც თქვენ იცით, რომ თქვენ მოხვდა ბოლოს იგი. 1532 01:16:17,890 --> 01:16:20,280 და არც თქვენ ი ან თქვენ არ გაქვთ იმ ეტაპზე. 1533 01:16:20,280 --> 01:16:23,170 >> ნიშნავს თუ არა ეს აზრი ყველას? 1534 01:16:23,170 --> 01:16:26,020 1535 01:16:26,020 --> 01:16:26,770 OK. 1536 01:16:26,770 --> 01:16:27,900 ეს არის საკმაოდ მნიშვნელოვანი, იმიტომ, რომ თქვენ 1537 01:16:27,900 --> 01:16:29,760 დაწერა ამ თქვენი კოდი ამაღამ. 1538 01:16:29,760 --> 01:16:32,660 მაგრამ თქვენ ბიჭები აქვს საკმაოდ კარგი გრძნობა, რაც თქვენ უნდა აკეთებს, 1539 01:16:32,660 --> 01:16:34,051 რომელიც არის კარგი. 1540 01:16:34,051 --> 01:16:34,550 OK. 1541 01:16:34,550 --> 01:16:38,840 ამიტომ, ჩვენ მივიღეთ დაახლოებით შვიდი წუთი დარჩა განყოფილებაში. 1542 01:16:38,840 --> 01:16:43,170 ამიტომ, ჩვენ ვაპირებთ ვისაუბროთ ამ pset, რომ ჩვენ უნდა აკეთებს. 1543 01:16:43,170 --> 01:16:46,410 ასე რომ, pset იყოფა ორ ნაწილად. 1544 01:16:46,410 --> 01:16:50,230 პირველი ნახევარი მოიცავს ახორციელებს იპოვოს 1545 01:16:50,230 --> 01:16:54,210 რომელშიც წერთ ხაზოვანი ძიება, ორობითი ძებნის და დახარისხება ალგორითმი. 1546 01:16:54,210 --> 01:16:56,690 >> ასე რომ, ეს არის პირველი დრო pset, სადაც 1547 01:16:56,690 --> 01:17:00,050 ჩვენ ვიქნებით გაწვდით ბიჭები რასაც განაწილების კოდი, რაც კოდი 1548 01:17:00,050 --> 01:17:02,740 ჩვენ წინასწარ დაწერილი, მაგრამ მხოლოდ დაუტოვებიათ რამდენიმე ცალი off 1549 01:17:02,740 --> 01:17:04,635 თქვენ დასრულდება წერილობით. 1550 01:17:04,635 --> 01:17:07,510 ასე, რომ თქვენ ბიჭები, როდესაც თქვენ შეხედეთ ამ კოდი, შესაძლოა ნამდვილად ეშინია. 1551 01:17:07,510 --> 01:17:08,630 თუ თქვენ, ისევე, როგორც, ahh, მე არ ვიცი, რა რომ აკეთებს, 1552 01:17:08,630 --> 01:17:11,670 მე არ ვიცი, როგორც, რომ, როგორც ჩანს, ისე რთულია, ahh, დაისვენოთ. 1553 01:17:11,670 --> 01:17:12,170 ეს OK. 1554 01:17:12,170 --> 01:17:12,930 დაწვრილებით სპეც. 1555 01:17:12,930 --> 01:17:16,920 სპეც ავუხსნათ, თუ ზუსტად რა ყველა ამ პროგრამების ვაკეთებთ. 1556 01:17:16,920 --> 01:17:20,560 >> მაგალითად, generate.c არის პროგრამა რომ მოვა თქვენი pset. 1557 01:17:20,560 --> 01:17:24,060 თქვენ არ რეალურად უნდა შეეხოთ, მაგრამ თქვენ უნდა გვესმოდეს, რასაც ის აკეთებს. 1558 01:17:24,060 --> 01:17:28,550 და generate.c, ყველა ის აკეთებს ან გამოიმუშავებს შემთხვევითი რიცხვების 1559 01:17:28,550 --> 01:17:32,400 ან შეგიძლიათ მისცეს მას თესლი, ისევე როგორც დამონტაჟებული ნომერი, რომელიც სჭირდება, 1560 01:17:32,400 --> 01:17:34,140 და უფრო მეტი რაოდენობით. 1561 01:17:34,140 --> 01:17:37,170 ასე რომ, არსებობს კონკრეტული გზა განახორციელოს generate.c, რომელიც 1562 01:17:37,170 --> 01:17:42,760 თქვენ შეგიძლიათ მხოლოდ მიიღოს bunch of ნომრები თქვენ შეამოწმოთ თქვენი სხვა მეთოდები. 1563 01:17:42,760 --> 01:17:45,900 >> ასე რომ, თუ თქვენ სურდა, ამისთვის მაგალითად, შეამოწმოთ თქვენი ძებნა, 1564 01:17:45,900 --> 01:17:48,970 თქვენ სურს, რომ აწარმოებს generate.c, გენერირება bunch of ნომრები, 1565 01:17:48,970 --> 01:17:50,880 და შემდეგ აწარმოებს თქვენი დამხმარე ფუნქცია. 1566 01:17:50,880 --> 01:17:53,930 თქვენი დამხმარე ფუნქცია, სადაც თქვენ რეალურად ფიზიკურად წერა კოდი. 1567 01:17:53,930 --> 01:17:59,330 და ვფიქრობ, დამხმარე ბიბლიოთეკა ფაილი თქვენ წერილობით, რომ იპოვოს მოუწოდებს. 1568 01:17:59,330 --> 01:18:02,950 ასე რომ, ფარგლებში helpers.c, თქვენ ამის მოძიება და დახარისხება. 1569 01:18:02,950 --> 01:18:06,500 >> და მაშინ ვაპირებთ არსებითად მხოლოდ ისინი ყველა ერთად. 1570 01:18:06,500 --> 01:18:10,350 სპეც გეტყვით, თუ როგორ უნდა დააყენა, რომ ბრძანების ხაზი. 1571 01:18:10,350 --> 01:18:14,880 და თქვენ შეძლებთ შეამოწმოთ თუ არ არის თქვენი დალაგება და ძებნის მუშაობენ. 1572 01:18:14,880 --> 01:18:15,870 ზემოთ. 1573 01:18:15,870 --> 01:18:18,720 აქვს ვინმეს უკვე დაიწყო და შეექმნა პრობლემა ან კითხვა 1574 01:18:18,720 --> 01:18:20,520 მათ აქვთ უფლება, ახლა ეს? 1575 01:18:20,520 --> 01:18:21,020 OK. 1576 01:18:21,020 --> 01:18:21,476 >> აუდიტორია: მოითმინეთ. 1577 01:18:21,476 --> 01:18:21,932 მე მაქვს შეკითხვა. 1578 01:18:21,932 --> 01:18:22,844 >> Andi Peng: ჰო. 1579 01:18:22,844 --> 01:18:28,390 >> აუდიტორია: ასე დავიწყე აკეთებს ხაზოვანი ძიება helpers.c 1580 01:18:28,390 --> 01:18:29,670 და ეს არ იყო ნამდვილად მუშაობს. 1581 01:18:29,670 --> 01:18:34,590 მაგრამ შემდეგ, მივხვდი, ჩვენ მხოლოდ უნდა წაშალოთ და ამის ორობითი ძებნა. 1582 01:18:34,590 --> 01:18:36,991 ასე რომ, ეს არ აქვს მნიშვნელობა, თუ ის არ მუშაობს? 1583 01:18:36,991 --> 01:18:39,700 1584 01:18:39,700 --> 01:18:41,510 >> Andi Peng: მოკლე პასუხი არ არის. 1585 01:18:41,510 --> 01:18:42,642 მაგრამ მას შემდეგ, რაც ჩვენ not-- 1586 01:18:42,642 --> 01:18:44,350 აუდიტორია: მაგრამ არავის რეალურად შემოწმების. 1587 01:18:44,350 --> 01:18:46,058 Andi Peng: ჩვენ არასდროს ვაპირებთ, რომ. 1588 01:18:46,058 --> 01:18:49,590 მაგრამ თქვენ ალბათ გინდათ დარწმუნდით, რომ თქვენი ძებნა მუშაობს. 1589 01:18:49,590 --> 01:18:51,700 იმიტომ, რომ თუ თქვენი წრფივი ძებნა არ მუშაობს, 1590 01:18:51,700 --> 01:18:54,410 მაშინ შანსი თქვენი ორობითი ძებნა არ იმუშავებს ისევე. 1591 01:18:54,410 --> 01:18:56,646 იმის გამო, რომ თქვენ გაქვთ მსგავსი ლოგიკა ორივე მათგანი. 1592 01:18:56,646 --> 01:18:58,020 და არა, ეს ნამდვილად არ აქვს. 1593 01:18:58,020 --> 01:19:01,300 ასე რომ, მხოლოდ თქვენ გახდეს ამ დალაგების და ორობითი ძებნა. 1594 01:19:01,300 --> 01:19:02,490 ჰო. 1595 01:19:02,490 --> 01:19:06,610 >> ასევე, ბევრი ბავშვები იყვნენ ცდილობს შეადგინოს helpers.c. 1596 01:19:06,610 --> 01:19:09,550 თქვენ არ რეალურად დაშვებული უნდა გავაკეთოთ, რომ, რადგან helpers.c 1597 01:19:09,550 --> 01:19:11,200 ამჯამად არ აქვს მთავარი ფუნქცია. 1598 01:19:11,200 --> 01:19:13,550 ასე რომ, თქვენ უნდა მხოლოდ რეალურად შედგენა 1599 01:19:13,550 --> 01:19:18,670 გენერირება და იპოვოს, იმიტომ, რომ ნახავთ მოუწოდებს helpers.c და ფუნქციების ფარგლებში. 1600 01:19:18,670 --> 01:19:20,790 ასე რომ, რაც გამართვის ტკივილი კონდახით. 1601 01:19:20,790 --> 01:19:22,422 მაგრამ ის, რაც ჩვენ უნდა გავაკეთოთ. 1602 01:19:22,422 --> 01:19:23,880 აუდიტორია: თქვენ უბრალოდ ყველა, არა? 1603 01:19:23,880 --> 01:19:27,290 Andi Peng თქვენ შეგიძლიათ მხოლოდ რათა ყველა, ისევე, yeah. 1604 01:19:27,290 --> 01:19:28,060 OK. 1605 01:19:28,060 --> 01:19:32,570 ასე რომ, ის თვალსაზრისით, თუ რა საქართველოს pset გეკითხებით ყველა უნდა გააკეთოს. 1606 01:19:32,570 --> 01:19:35,160 თუ თქვენ გაქვთ რაიმე შეკითხვები, შეგიძლიათ უფასო მკითხავთ შემდეგ სექციაში. 1607 01:19:35,160 --> 01:19:37,580 მე ვიქნები აქ, ისევე, 20-ე წუთზე. 1608 01:19:37,580 --> 01:19:40,500 >> და ჰო, pset ს ნამდვილად არ არის, რომ ცუდი. 1609 01:19:40,500 --> 01:19:41,680 თქვენ ბიჭები უნდა იყოს OK. 1610 01:19:41,680 --> 01:19:43,250 ეს, უბრალოდ მიჰყევით პრინციპებს. 1611 01:19:43,250 --> 01:19:47,840 სახის ჰქონდეს განცდა, ლოგიკურად, რა უნდა ხდება და თქვენ იქნება ჯარიმა. 1612 01:19:47,840 --> 01:19:48,690 არ უნდა იყოს ძალიან ეშინია. 1613 01:19:48,690 --> 01:19:50,220 არსებობს ბევრი კოდი უკვე წერია. 1614 01:19:50,220 --> 01:19:53,011 არ უნდა იყოს ძალიან ეშინია თუ არ მესმის რა ყველა რომ ნიშნავს. 1615 01:19:53,011 --> 01:19:54,749 თუ ეს არის ბევრი, ეს სრულიად ჯარიმა. 1616 01:19:54,749 --> 01:19:55,790 და მოვიდა საათებში. 1617 01:19:55,790 --> 01:19:57,520 ჩვენ დაგეხმარებით შევხედოთ. 1618 01:19:57,520 --> 01:20:00,810 >> აუდიტორია: ერთად დამატებით ფუნქციები, არ გადავხედავთ იმ up? 1619 01:20:00,810 --> 01:20:03,417 >> Andi Peng: ჰო, ეს არის კოდი. 1620 01:20:03,417 --> 01:20:05,750 თამაშში 15, ნახევარი ეს უკვე დაწერილი თქვენთვის. 1621 01:20:05,750 --> 01:20:09,310 ასე რომ, ეს ფუნქციები უკვე კოდი. 1622 01:20:09,310 --> 01:20:12,020 Yep. 1623 01:20:12,020 --> 01:20:12,520 ყველა უფლება. 1624 01:20:12,520 --> 01:20:14,000 ისე, წარმატებებს გისურვებთ. 1625 01:20:14,000 --> 01:20:15,180 ეს არის ამაზრზენი დღეს. 1626 01:20:15,180 --> 01:20:19,370 ასე რომ, იმედია, თქვენ ბიჭები არ გრძნობს, ძალიან ცუდი რჩებიან შიგნით და კოდირებას. 1627 01:20:19,370 --> 01:20:22,133