1 00:00:00,000 --> 00:00:11,904 >> [მუსიკის დაკვრა] 2 00:00:11,904 --> 00:00:12,910 >> პროფესორი: ყველა უფლება. 3 00:00:12,910 --> 00:00:16,730 ეს არის CS50 და ეს არის ბოლოს კვირაში სამი. 4 00:00:16,730 --> 00:00:20,230 ასე რომ, ჩვენ დღეს აქ არ Sanders თეატრი, ნაცვლად Weidner ბიბლიოთეკა. 5 00:00:20,230 --> 00:00:23,170 შიგნით რაც არის სტუდია ცნობილია, როგორც Hauser სტუდია, 6 00:00:23,170 --> 00:00:28,310 ან უნდა ვთქვათ სტუდია H, ან უნდა ჩვენ ვთქვათ თუ სარგებლობდა, რომ ხუმრობა, 7 00:00:28,310 --> 00:00:30,540 ეს ფაქტიურად კლასელი, Mark, ონლაინ, 8 00:00:30,540 --> 00:00:32,420 რომელმაც შესთავაზა იმდენი გავლით Twitter. 9 00:00:32,420 --> 00:00:34,270 ახლა რა მაგარი აქ ყოფნის სტუდიაში 10 00:00:34,270 --> 00:00:38,410 ის არის, რომ მე გარშემორტყმული მწვანე კედლები, მწვანე ეკრანზე და chromakey, 11 00:00:38,410 --> 00:00:43,290 ასე ვთქვათ, რაც იმას ნიშნავს, რომ CS50 ს წარმოების გუნდი, არ ვიცი მე 12 00:00:43,290 --> 00:00:47,380 ახლა, შეიძლება აყენებს ჩემთვის ყველაზე მსოფლიოს ნებისმიერ წერტილში, 13 00:00:47,380 --> 00:00:48,660 უკეთესი ან უარესი. 14 00:00:48,660 --> 00:00:51,800 >> ახლა რა დევს წინ, პრობლემა კომპლექტი ორი არის თქვენს ხელში ამ კვირაში, 15 00:00:51,800 --> 00:00:53,830 მაგრამ პრობლემა კომპლექტი სამი ამ ერთი კვირის განმავლობაში, 16 00:00:53,830 --> 00:00:56,600 თქვენ უნდა დაუპირისპირდა ე.წ. თამაში 15 17 00:00:56,600 --> 00:00:58,960 ძველი პარტიის სასარგებლოდ, რომ თქვენ ალბათ გახსოვთ მიმღები 18 00:00:58,960 --> 00:01:02,030 როგორც ბავშვი, რომელიც მთელი bunch ციფრები, რომ შეიძლება ლღობას up, down, 19 00:01:02,030 --> 00:01:05,790 მარცხენა და მარჯვენა, და იქ ერთი უფსკრული ფარგლებში თავსატეხი, სადაც თქვენ 20 00:01:05,790 --> 00:01:07,840 შეიძლება რეალურად ლღობას იმ თავსატეხი ცალი. 21 00:01:07,840 --> 00:01:11,150 საბოლოო ჯამში, თქვენ მიიღოს ამ თავსატეხი ნახევრად შემთხვევითი მიზნით, 22 00:01:11,150 --> 00:01:12,940 და მიზანია დასალაგებლად ის, ზემოდან, 23 00:01:12,940 --> 00:01:16,310 მარცხნიდან მარჯვნივ, ერთი ყველა გზა მეშვეობით 15. 24 00:01:16,310 --> 00:01:19,360 >> სამწუხაროდ, განხორციელება თქვენ გაქვთ ხელთ 25 00:01:19,360 --> 00:01:21,590 იქნება პროგრამული უზრუნველყოფა საფუძველზე, არ არის ფიზიკურად. 26 00:01:21,590 --> 00:01:25,280 თქვენ რეალურად აპირებს უნდა დაწეროს კოდი, რომელიც სტუდენტი ან მომხმარებელს შეუძლია 27 00:01:25,280 --> 00:01:26,760 ითამაშოს თამაში 15. 28 00:01:26,760 --> 00:01:29,030 და სინამდვილეში, ჰაკერი გამოცემა თამაში 15 29 00:01:29,030 --> 00:01:32,155 თქვენ უნდა იყოს გამოწვევა განხორციელება, არა მხოლოდ სათამაშო ამ ძველი სკოლა 30 00:01:32,155 --> 00:01:35,010 თამაში, არამედ გადაჭრის ის, ახორციელებს ღმერთი რეჟიმი, 31 00:01:35,010 --> 00:01:38,280 ასე ვთქვათ, რომ რეალურად წყვეტს თავსატეხი ადამიანის, 32 00:01:38,280 --> 00:01:41,080 მათთვის მინიშნება, მას შემდეგ, რაც მინიშნება, მას შემდეგ, რაც მინიშნება. 33 00:01:41,080 --> 00:01:42,280 ასე უფრო, რომ მომავალ კვირას. 34 00:01:42,280 --> 00:01:43,720 მაგრამ ეს, რა ელის. 35 00:01:43,720 --> 00:01:47,610 >> ახლა გავიხსენოთ, რომ ადრე ამ კვირას ჩვენ გვქონდა ამ cliffhanger, თუ გნებავთ, 36 00:01:47,610 --> 00:01:52,560 რომლის დროსაც საუკეთესო ვაკეთებდით დახარისხება ბრძენი იყო ზედა ზღვარი დიდი ო ო 37 00:01:52,560 --> 00:01:53,210 კვადრატი. 38 00:01:53,210 --> 00:01:56,520 სხვა სიტყვებით, bubble sort, შერჩევის დალაგების, Insertion დალაგების, 39 00:01:56,520 --> 00:01:59,120 ყველა მათგანი, ხოლო სხვადასხვა მათი განხორციელება, 40 00:01:59,120 --> 00:02:03,480 devolved შევიდა n კვადრატში გაშვებული დრო ძალიან ცუდ შემთხვევაში. 41 00:02:03,480 --> 00:02:06,010 და ჩვენ, როგორც წესი, ვივარაუდოთ, რომ ძალიან ცუდ შემთხვევაში დახარისხება 42 00:02:06,010 --> 00:02:08,814 ერთ-ერთი, რომელიც თქვენი პორტები სრულიად უკან. 43 00:02:08,814 --> 00:02:11,980 და მართლაც, დასჭირდა საკმაოდ რამდენიმე ნაბიჯი განახორციელოს თითოეული იმ ალგორითმები. 44 00:02:11,980 --> 00:02:15,110 >> ახლა ბოლომდე კლასის გავიხსენოთ, ჩვენ შედარებით bubble sort 45 00:02:15,110 --> 00:02:19,390 წინააღმდეგ შერჩევის დალაგების წინააღმდეგ ერთ სხვა რომ ჩვენ მოუწოდა შერწყმა დალაგების დროს, 46 00:02:19,390 --> 00:02:22,120 და მე ვთავაზობ, რომ ის აღების უპირატესობა გაკვეთილი კვირაში 47 00:02:22,120 --> 00:02:24,060 ნულოვანი, გათიშე და დაიპყროთ. 48 00:02:24,060 --> 00:02:28,810 და რატომღაც მისაღწევად გარკვეული სახის ლოგარითმული ქრონომეტრაჟი საბოლოო ჯამში, 49 00:02:28,810 --> 00:02:31,024 ნაცვლად რაღაც რომ წმინდა კვადრატული. 50 00:02:31,024 --> 00:02:33,440 და ეს არ არის საკმაოდ ლოგარითმული, ეს ცოტა მეტია. 51 00:02:33,440 --> 00:02:36,520 მაგრამ თუ გავიხსენებთ კლასი, ეს იყო ბევრად, ბევრად უფრო სწრაფად. 52 00:02:36,520 --> 00:02:38,210 მოდით შევხედოთ, სადაც ჩვენ შეჩერდით. 53 00:02:38,210 --> 00:02:41,880 54 00:02:41,880 --> 00:02:45,370 >> Bubble დალაგების წინააღმდეგ შერჩევა დალაგების წინააღმდეგ შერწყმა დალაგების. 55 00:02:45,370 --> 00:02:47,700 ახლა ისინი ყველა გაშვებული, თეორიულად, ამავე დროს. 56 00:02:47,700 --> 00:02:50,510 პროცესორი არის გაშვებული, ამავე სიჩქარე. 57 00:02:50,510 --> 00:02:54,990 მაგრამ თქვენ შეგიძლიათ გრძნობენ, რამდენად მოსაწყენია ეს ძალიან სწრაფად უნდა გახდეს, 58 00:02:54,990 --> 00:02:58,790 და რამდენად სწრაფად, როდესაც ჩვენ მიეცეს ცოტა კვირაში ნულოვანი ის ალგორითმები, 59 00:02:58,790 --> 00:03:00,080 შეგვიძლია დაჩქარდეს რამ მდე. 60 00:03:00,080 --> 00:03:01,630 >> ასე ნიშნის ერთგვარი გამოიყურება საოცარი. 61 00:03:01,630 --> 00:03:05,220 როგორ შეგვიძლია ბერკეტი მას, რათა დასალაგებლად ნომრები უფრო სწრაფად. 62 00:03:05,220 --> 00:03:07,140 ისე, მოდით ვიფიქროთ უკან რომ ნივთიერება, რომელიც ჩვენ 63 00:03:07,140 --> 00:03:10,380 ჰქონდა უკან კვირაში ნულოვანი, რომ ეძებს ვინმეს სატელეფონო წიგნი, 64 00:03:10,380 --> 00:03:12,380 და გავიხსენოთ, რომ pseudocode რომ ჩვენ შეთავაზებული, 65 00:03:12,380 --> 00:03:14,560 მეშვეობით, რომელიც ჩვენ შეგვიძლია მოვძებნოთ ვინმეს მოსწონს მაიკ სმიტი, 66 00:03:14,560 --> 00:03:16,310 ჩანდა ცოტა რაღაც მსგავსი. 67 00:03:16,310 --> 00:03:20,820 >> ახლა შევხედოთ კერძოდ ხაზი 7 და 8 და 10 და 11, 68 00:03:20,820 --> 00:03:25,240 რომელიც გამოიწვევს, რომ მარყუჟი, რომლითაც ჩვენ ინახება ბრუნდება ხაზი 3 ისევ და ისევ, 69 00:03:25,240 --> 00:03:26,520 და ისევ. 70 00:03:26,520 --> 00:03:31,790 მაგრამ აღმოჩნდება, რომ ჩვენ შეგიძლიათ ნახოთ ეს ალგორითმი, აქ pseudocode, 71 00:03:31,790 --> 00:03:33,620 ცოტა მეტი holistically. 72 00:03:33,620 --> 00:03:35,960 ფაქტობრივად, რაც მე ვეძებ განთავსებულია აქ ეკრანზე, 73 00:03:35,960 --> 00:03:41,180 ალგორითმი ეძებს მაიკ სმიტი შორის რამდენიმე კომპლექტი გვერდებზე. 74 00:03:41,180 --> 00:03:45,520 და მართლაც, ჩვენ შეგვიძლია გავამარტივოთ ეს ალგორითმი იმ ხაზების 7 და 8, 75 00:03:45,520 --> 00:03:49,860 და 10 და 11 უბრალოდ ვთქვა, რომელიც მე აქ წარმოდგენილი ყვითელი. 76 00:03:49,860 --> 00:03:52,210 სხვა სიტყვებით, თუ მაიკ სმიტი ადრე წიგნი, 77 00:03:52,210 --> 00:03:55,004 ჩვენ არ უნდა მიუთითოთ ნაბიჯი ნაბიჯ ახლა როგორ უნდა წავიდეთ პოულობენ მას. 78 00:03:55,004 --> 00:03:56,920 ჩვენ არ უნდა მიუთითოთ დაბრუნდეს ხაზი 3, 79 00:03:56,920 --> 00:03:58,960 რატომ არ გვაქვს მხოლოდ ნაცვლად, ვთქვათ, უფრო ზოგადად, 80 00:03:58,960 --> 00:04:01,500 ძიება Mike წელს მარცხენა ნახევარში წიგნი. 81 00:04:01,500 --> 00:04:03,960 >> პირიქით, თუ მაიკ რეალურად მოგვიანებით წიგნი, 82 00:04:03,960 --> 00:04:07,540 რატომ არ ჩვენ უბრალოდ შეთავაზება unquote ძიება მაიკ მარჯვენა ნახევარში წიგნი. 83 00:04:07,540 --> 00:04:11,030 სხვა სიტყვებით, რატომ არ გვაქვს მხოლოდ სახის punt საკუთარ თავს და განაცხადა, 84 00:04:11,030 --> 00:04:13,130 ძიება Mike ამ სუბსეტ წიგნი, 85 00:04:13,130 --> 00:04:16,279 და დატოვოს ის ჩვენი არსებული ალგორითმი გვითხრათ 86 00:04:16,279 --> 00:04:18,750 როგორ ვიპოვოთ მაიკ რომ მარცხენა ნახევარში წიგნი. 87 00:04:18,750 --> 00:04:20,750 სხვა სიტყვებით რომ ვთქვათ, ჩვენი ალგორითმი მუშაობს თუ არა ის 88 00:04:20,750 --> 00:04:24,670 სატელეფონო წიგნი ამ სისქე, ამ სისქე, ან ნებისმიერი სისქის განაწილებაზე. 89 00:04:24,670 --> 00:04:27,826 ასე რომ ჩვენ შეგვიძლია რეკურსიული განისაზღვროს ამ ალგორითმი. 90 00:04:27,826 --> 00:04:29,950 სხვა სიტყვებით, წლის ეკრანზე აქ, არის ალგორითმი 91 00:04:29,950 --> 00:04:33,130 ეძებს მაიკ სმიტი შორის გვერდების სატელეფონო წიგნი. 92 00:04:33,130 --> 00:04:37,410 ასე რომ ხაზის 7 და 10, მოდით უბრალოდ, ვამბობთ ზუსტად რომ. 93 00:04:37,410 --> 00:04:40,250 და მე ეს ტერმინი მომენტში წინ, და მართლაც, უკან 94 00:04:40,250 --> 00:04:42,450 არის buzzword ახლა, და ეს არის ამ პროცესში 95 00:04:42,450 --> 00:04:47,210 თავისსავე ციკლური მიერ რატომღაც გამოყენებით კოდი, რომ თქვენ უკვე გაქვთ, 96 00:04:47,210 --> 00:04:49,722 და მას კიდევ ერთხელ, და ისევ და ისევ. 97 00:04:49,722 --> 00:04:51,930 ახლა ეს იქნება მნიშვნელოვანი რომ ჩვენ რაღაცნაირად ბოლოში 98 00:04:51,930 --> 00:04:53,821 გარეთ, და არ გავაკეთოთ, რომ უსასრულოდ გრძელი. 99 00:04:53,821 --> 00:04:56,070 წინააღმდეგ შემთხვევაში, ჩვენ ვაპირებთ აქვს მართლაც უსასრულო ციკლი. 100 00:04:56,070 --> 00:04:59,810 მაგრამ ვნახოთ, თუ ჩვენ შეგვიძლია სესხება ამ იდეას ერთი უკან, თავისსავე ისევ 101 00:04:59,810 --> 00:05:03,600 და ისევ და ისევ, უნდა გადაწყვიტოს დახარისხება პრობლემა მეშვეობით შერწყმა 102 00:05:03,600 --> 00:05:05,900 დალაგების, ყველა უფრო ეფექტურად. 103 00:05:05,900 --> 00:05:06,970 >> ამიტომ მე გაძლევთ შერწყმა დალაგების. 104 00:05:06,970 --> 00:05:07,920 მოდით შევხედოთ. 105 00:05:07,920 --> 00:05:10,850 ასე რომ, აქ არის pseudocode, ერთად რომელიც ჩვენ შეგვიძლია განვახორციელოთ დახარისხება, 106 00:05:10,850 --> 00:05:12,640 გამოყენებით ამ ალგორითმი მოუწოდა შერწყმა დალაგების. 107 00:05:12,640 --> 00:05:13,880 და ეს საკმაოდ მარტივია. 108 00:05:13,880 --> 00:05:15,940 On შეტანის ო ელემენტები, სხვა სიტყვებით, თუ თქვენ 109 00:05:15,940 --> 00:05:18,830 მოცემული n ელემენტებს და ციფრები და წერილები და რაც არ უნდა შეყვანის, 110 00:05:18,830 --> 00:05:22,430 თუ თქვენ მოცემული n ელემენტებს, თუ n ნაკლებია, ვიდრე 2, დააბრუნებს. 111 00:05:22,430 --> 00:05:22,930 მარჯვენა? 112 00:05:22,930 --> 00:05:26,430 იმიტომ, რომ თუ n ნაკლებია, ვიდრე 2, იმას ნიშნავს, რომ ჩემს სიაში ელემენტები 113 00:05:26,430 --> 00:05:30,446 ან ზომა 0 ან 1, და ორივე იმ ტრივიალური შემთხვევაში, 114 00:05:30,446 --> 00:05:31,570 სია უკვე დახარისხებული. 115 00:05:31,570 --> 00:05:32,810 თუ არ არის სიაში, ის გადანაწილებული. 116 00:05:32,810 --> 00:05:35,185 და თუ არ არის სია ხანგრძლივობა 1, ეს აშკარად გადანაწილებული. 117 00:05:35,185 --> 00:05:38,280 ასე რომ, ალგორითმი მხოლოდ სჭირდება მართლაც რაღაც საინტერესო, 118 00:05:38,280 --> 00:05:40,870 თუ ჩვენ გვაქვს ორი ან მეტი ელემენტები მოცემულია ჩვენთვის. 119 00:05:40,870 --> 00:05:42,440 მოდით შევხედოთ ჯადოსნური შემდეგ. 120 00:05:42,440 --> 00:05:47,500 Else დასალაგებლად მარცხენა ნახევარში ელემენტები, მაშინ დასალაგებლად მარჯვენა ნახევარში ელემენტები, 121 00:05:47,500 --> 00:05:49,640 შემდეგ შერწყმა დახარისხებული halves. 122 00:05:49,640 --> 00:05:52,440 და რა სახის გონება bending აქ ის არის, რომ მე ნამდვილად არ 123 00:05:52,440 --> 00:05:56,190 როგორც ჩანს, არ გითხარით, არაფერი უბრალოდ არ არის, უფლება? 124 00:05:56,190 --> 00:05:59,560 ყველა მე განაცხადა, მოცემული სია ო ელემენტები, დასალაგებლად მარცხენა ნახევარში, 125 00:05:59,560 --> 00:06:01,800 შემდეგ მარჯვენა ნახევარში, მაშინ შერწყმა დახარისხებული halves, 126 00:06:01,800 --> 00:06:03,840 მაგრამ სად არის ფაქტობრივი საიდუმლო სოუსით? 127 00:06:03,840 --> 00:06:05,260 სად არის ალგორითმი? 128 00:06:05,260 --> 00:06:09,150 ისე გამოდის, რომ ეს ორი ხაზი პირველი, დალაგება მარცხენა ნახევარში ელემენტები, 129 00:06:09,150 --> 00:06:13,970 და სახის მარჯვენა ნახევარში ელემენტები, არის რეკურსიული მოუწოდებს, ასე ვთქვათ. 130 00:06:13,970 --> 00:06:16,120 >> ყოველივე ამის შემდეგ, ამ მომენტში, მაქვს 131 00:06:16,120 --> 00:06:18,950 ალგორითმი, რომლის დასალაგებლად მთელი bunch of ელემენტები? 132 00:06:18,950 --> 00:06:19,450 დიახ. 133 00:06:19,450 --> 00:06:20,620 ეს უფლება აქ. 134 00:06:20,620 --> 00:06:25,180 ეს უფლება აქ ეკრანზე, და ასე რომ შეგიძლიათ გამოიყენოთ იგივე კომპლექტი ნაბიჯები 135 00:06:25,180 --> 00:06:28,500 დასალაგებლად მარცხენა ნახევარში, როგორც შემიძლია მარჯვენა ნახევარში. 136 00:06:28,500 --> 00:06:30,420 და მართლაც, ისევ და ისევ. 137 00:06:30,420 --> 00:06:34,210 ასე რომ, რატომღაც ან სხვა, და ჩვენ მალე ეს, ჯადოსნური შერწყმა დალაგების 138 00:06:34,210 --> 00:06:37,967 არის ჩართული, რომ ძალიან საბოლოო ხაზი, შერწყმის დახარისხებული halves. 139 00:06:37,967 --> 00:06:39,300 და რომ, როგორც ჩანს, საკმაოდ ინტუიციური. 140 00:06:39,300 --> 00:06:41,050 თქვენ მიიღოს ორ ნაწილად, და თქვენ, რატომღაც, შერწყმა მათ ერთად, 141 00:06:41,050 --> 00:06:43,260 და ჩვენ დავინახავთ, ეს კონკრეტულად ამ მომენტში. 142 00:06:43,260 --> 00:06:45,080 >> მაგრამ ეს არის სრული ალგორითმი. 143 00:06:45,080 --> 00:06:46,640 და ვნახოთ, სწორედ ამიტომ. 144 00:06:46,640 --> 00:06:50,912 ისე ვფიქრობ, რომ ჩვენ მოცემული ეს იგივე რვა ელემენტებს აქ ეკრანზე, ერთი 145 00:06:50,912 --> 00:06:53,120 რვა, მაგრამ ისინი ერთი შეხედვით, შემთხვევითი მიზნით. 146 00:06:53,120 --> 00:06:55,320 და მიზანი ხელთ არის დასალაგებლად ამ ელემენტებს. 147 00:06:55,320 --> 00:06:58,280 ისე როგორ შემიძლია წასვლა შესახებ ამით ის გამოყენებით, კიდევ ერთხელ, 148 00:06:58,280 --> 00:07:00,407 შერწყმა დალაგების, როგორც პოსტი ამ pseudocode? 149 00:07:00,407 --> 00:07:02,740 ისევ და ისევ, ingrain ეს თქვენი აზრით, მხოლოდ ერთი წუთით. 150 00:07:02,740 --> 00:07:05,270 პირველ შემთხვევაში საკმაოდ ტრივიალური, თუ ის არანაკლებ 2, 151 00:07:05,270 --> 00:07:07,060 უბრალოდ დაბრუნებას, არ არსებობს სამუშაოა ჩასატარებელი. 152 00:07:07,060 --> 00:07:09,290 ასე რომ, რეალურად არსებობს მხოლოდ სამი ნაბიჯები, რათა ნამდვილად გვახსოვდეს. 153 00:07:09,290 --> 00:07:11,081 ისევ და ისევ, მე ვარ აპირებს გვინდა, რომ გვქონდეს 154 00:07:11,081 --> 00:07:13,980 დასალაგებლად მარცხენა ნახევარში, დასალაგებლად მარჯვენა ნახევარში, 155 00:07:13,980 --> 00:07:15,890 და კიდევ მათი ორ ნაწილად დალაგებულია, 156 00:07:15,890 --> 00:07:18,710 მინდა შერწყმა მათ ერთად ერთ დახარისხებული სია. 157 00:07:18,710 --> 00:07:19,940 გააგრძელეთ, რომ გონება. 158 00:07:19,940 --> 00:07:21,310 >> ასე რომ, აქ ორიგინალური სიაში. 159 00:07:21,310 --> 00:07:23,510 მოდით მკურნალობა, როგორც მასივი, როგორც ჩვენ დავიწყეთ 160 00:07:23,510 --> 00:07:25,800 კვირაში ორი, რომელიც არის მომიჯნავე ბლოკი მეხსიერება. 161 00:07:25,800 --> 00:07:28,480 ამ შემთხვევაში, რომელიც შეიცავს რვა ციფრები, თავში დაბრუნება უკან. 162 00:07:28,480 --> 00:07:30,700 და მოდით ახლა ვრცელდება შერწყმა დალაგების. 163 00:07:30,700 --> 00:07:33,300 ასე რომ, მე პირველად მინდა დასალაგებლად მარცხენა ნახევარში ამ სიაში, 164 00:07:33,300 --> 00:07:37,370 და მოდით, აქედან გამომდინარე, ფოკუსირება 4, 8, 6, და 2. 165 00:07:37,370 --> 00:07:41,000 >> ახლა როგორ შემიძლია წასვლა შესახებ დახარისხება სიაში ზომა 4? 166 00:07:41,000 --> 00:07:45,990 მე უნდა ახლა განიხილავს დახარისხება მარცხნივ მარცხენა ნახევარში. 167 00:07:45,990 --> 00:07:47,720 ერთხელ, მოდით გადახვევა მხოლოდ ერთი წუთით. 168 00:07:47,720 --> 00:07:51,010 იმ შემთხვევაში, თუ pseudocode არის ეს, და მე ეძლევა რვა ელემენტები, 169 00:07:51,010 --> 00:07:53,230 8 აშკარად დიდი მეტი ან ტოლია 2. 170 00:07:53,230 --> 00:07:54,980 ასე რომ, პირველ შემთხვევაში არ ვრცელდება. 171 00:07:54,980 --> 00:07:58,120 ასე რომ დასალაგებლად რვა ელემენტებს, მე პირველი დასალაგებლად მარცხენა ნახევარში ელემენტები, 172 00:07:58,120 --> 00:08:01,930 მაშინ მე დასალაგებლად მარჯვენა ნახევარში, მაშინ მე შერწყმა ორი დახარისხებული ნაწილად, თითოეული ზომა 4. 173 00:08:01,930 --> 00:08:02,470 OK. 174 00:08:02,470 --> 00:08:07,480 >> მაგრამ თუ თქვენ უბრალოდ მითხრა, დასალაგებლად მარცხენა ნახევარში, რომელიც არის ზომა 4, 175 00:08:07,480 --> 00:08:09,350 როგორ უნდა დასალაგებლად მარცხენა ნახევარი? 176 00:08:09,350 --> 00:08:11,430 ისე, თუ მაქვს შეყვანის ოთხი ელემენტები, 177 00:08:11,430 --> 00:08:14,590 მე პირველად დასალაგებლად მარცხენა ორი, მაშინ უფლება ორი, 178 00:08:14,590 --> 00:08:16,210 და მერე შერწყმა მათ ერთად. 179 00:08:16,210 --> 00:08:18,700 ასე რომ, კიდევ ერთხელ, ეს ხდება ცოტა გონება bending თამაში აქ, 180 00:08:18,700 --> 00:08:21,450 იმიტომ, რომ თქვენ, სახის, უნდა მახსოვს, სადაც თქვენ ამბავი, 181 00:08:21,450 --> 00:08:23,620 მაგრამ ბოლოს დღეს, მოცემული ნებისმიერი რაოდენობის ელემენტები, 182 00:08:23,620 --> 00:08:25,620 თქვენ პირველი გვინდა დასალაგებლად მარცხენა ნახევარში, მაშინ მარჯვენა ნახევარში, 183 00:08:25,620 --> 00:08:26,661 შემდეგ შერწყმა მათ ერთად. 184 00:08:26,661 --> 00:08:28,630 მოდით დავიწყოთ ზუსტად რომ. 185 00:08:28,630 --> 00:08:30,170 აი შეყვანის რვა ელემენტებს. 186 00:08:30,170 --> 00:08:31,910 ამჟამად ჩვენ ვუყურებთ მარცხენა ნახევარში აქ. 187 00:08:31,910 --> 00:08:33,720 როგორ დასალაგებლად ოთხი ელემენტები? 188 00:08:33,720 --> 00:08:35,610 მე პირველად დასალაგებლად მარცხენა ნახევარში. 189 00:08:35,610 --> 00:08:37,720 ახლა როგორ უნდა დასალაგებლად მარცხენა ნახევარი? 190 00:08:37,720 --> 00:08:39,419 მე უკვე მოცემული ორი ელემენტები. 191 00:08:39,419 --> 00:08:41,240 მოდით დასალაგებლად ამ ორ ელემენტს. 192 00:08:41,240 --> 00:08:44,540 2 მეტია ან უდრის 2, რა თქმა უნდა. 193 00:08:44,540 --> 00:08:46,170 ასე რომ, პირველ შემთხვევაში არ ვრცელდება. 194 00:08:46,170 --> 00:08:49,010 >> ასე რომ, ახლა უნდა დასალაგებლად მარცხენა ნახევარი ამ ორი ელემენტები. 195 00:08:49,010 --> 00:08:50,870 მარცხენა ნახევარში, რა თქმა უნდა, მხოლოდ 4. 196 00:08:50,870 --> 00:08:54,020 ასე რომ, მე დასალაგებლად სიაში ერთ ელემენტს? 197 00:08:54,020 --> 00:08:57,960 კარგად არის, რომ სპეციალური ბაზის შემთხვევაში დასაწყისშივე, ასე ვთქვათ, ვრცელდება. 198 00:08:57,960 --> 00:09:01,470 1 2 დღეზე ნაკლები, და ჩემი სია მართლაც ზომა 1. 199 00:09:01,470 --> 00:09:02,747 ასე რომ, მე უბრალოდ დაბრუნდეს. 200 00:09:02,747 --> 00:09:03,580 მე არაფერს არ აკეთებს. 201 00:09:03,580 --> 00:09:06,770 და მართლაც, შევხედოთ, თუ რა მე კეთდება, 4 უკვე დახარისხებული. 202 00:09:06,770 --> 00:09:09,220 ისევე, როგორც მე უკვე ნაწილობრივ წარმატებული აქ. 203 00:09:09,220 --> 00:09:11,750 >> ახლა, როგორც ჩანს, ასეთი სულელური აცხადებენ, მაგრამ ეს სიმართლეა. 204 00:09:11,750 --> 00:09:13,700 4 სიაში ზომა 1. 205 00:09:13,700 --> 00:09:15,090 ეს უკვე გადანაწილებული. 206 00:09:15,090 --> 00:09:16,270 სწორედ მარცხენა ნახევარში. 207 00:09:16,270 --> 00:09:18,010 ახლა მე დასალაგებლად მარჯვენა ნახევარში. 208 00:09:18,010 --> 00:09:22,310 ჩემი შემავალი ერთ-ერთი ელემენტია, 8 ასევე, უკვე დახარისხებული. 209 00:09:22,310 --> 00:09:25,170 Stupid, მაგრამ კიდევ ერთხელ, ამ ძირითად პრინციპს, 210 00:09:25,170 --> 00:09:28,310 აპირებს საშუალებას მოგვცემს აშენება თავზე ამ წარმატებით. 211 00:09:28,310 --> 00:09:32,260 4 დახარისხებული, 8 დალაგებულია, ახლა რა იყო, რომ ბოლო ნაბიჯი? 212 00:09:32,260 --> 00:09:35,330 ასე რომ მესამე და საბოლოო ნაბიჯი, ნებისმიერ დროს თქვენ დახარისხება სიაში, გავიხსენოთ, 213 00:09:35,330 --> 00:09:38,310 იყო შერწყმა ორ ნაწილად, მარცხენა და მარჯვენა. 214 00:09:38,310 --> 00:09:39,900 ასე რომ, მოდით გავაკეთოთ ზუსტად რომ. 215 00:09:39,900 --> 00:09:41,940 ჩემი მარცხენა ნახევარში, რა თქმა უნდა, 4. 216 00:09:41,940 --> 00:09:43,310 ჩემი მარჯვენა ნახევარში 8. 217 00:09:43,310 --> 00:09:44,100 >> ასე რომ, მოდით ეს. 218 00:09:44,100 --> 00:09:46,410 პირველი მე ვაპირებ გამოყოს დამატებითი მეხსიერება, 219 00:09:46,410 --> 00:09:48,680 რომ მე წარმოვადგენ, როგორც მხოლოდ მეორად მასივი, 220 00:09:48,680 --> 00:09:49,660 რომ დიდი საკმარისი შეესაბამება ეს. 221 00:09:49,660 --> 00:09:52,243 მაგრამ თქვენ წარმოიდგინეთ, გაგრძელების მართკუთხედი მთელ სიგრძეზე, 222 00:09:52,243 --> 00:09:53,290 თუ ჩვენ გვჭირდება უფრო მოგვიანებით. 223 00:09:53,290 --> 00:09:58,440 როგორ შემიძლია მიიღებს 4 და 8, და შერწყმა ამ ორი სიები ზომა 1 ერთად? 224 00:09:58,440 --> 00:10:00,270 აქაც საკმაოდ მარტივია. 225 00:10:00,270 --> 00:10:03,300 4 მოდის პირველი, შემდეგ მოდის 8. 226 00:10:03,300 --> 00:10:07,130 იმიტომ, რომ თუ მინდა დასალაგებლად მარცხენა ნახევარში, მაშინ მარჯვენა ნახევარში, 227 00:10:07,130 --> 00:10:09,900 და შემდეგ შერწყმა ამ ორი halves ერთად, დახარისხებული მიზნით, 228 00:10:09,900 --> 00:10:11,940 4 მოდის პირველი, შემდეგ მოდის 8. 229 00:10:11,940 --> 00:10:15,810 >> ასე რომ, ჩვენ, როგორც ჩანს, პროგრესის, მაშინაც კი, მიუხედავად იმისა, რომ მე არ კეთდება ნებისმიერი ფაქტობრივი მუშაობის. 230 00:10:15,810 --> 00:10:17,800 მაგრამ გახსოვდეთ, სადაც ჩვენ ვართ ამბავი. 231 00:10:17,800 --> 00:10:19,360 ჩვენ თავდაპირველად რვა ელემენტებს. 232 00:10:19,360 --> 00:10:21,480 ჩვენ დახარისხებული მარცხენა ნახევარში, რომელიც 4. 233 00:10:21,480 --> 00:10:24,450 მაშინ ჩვენ დახარისხებული მარცხენა ნახევარში მარცხენა ნახევარში, რომელიც 2. 234 00:10:24,450 --> 00:10:25,270 და აქ ჩვენ მივდივართ. 235 00:10:25,270 --> 00:10:26,920 ჩვენ გავაკეთეთ, რომ ნაბიჯი. 236 00:10:26,920 --> 00:10:29,930 >> ასე რომ, თუ ჩვენ დახარისხებული მარცხენა ნახევარში 2, ახლა ჩვენ 237 00:10:29,930 --> 00:10:32,130 უნდა დასალაგებლად მარჯვენა ნახევარში 2. 238 00:10:32,130 --> 00:10:35,710 ასე რომ, მარჯვენა ნახევარში 2 ამ ორი ფასეულობის აქ, 6 და 2. 239 00:10:35,710 --> 00:10:40,620 მოდით ახლა მიიღოს შეყვანის ზომა 2 და დასალაგებლად მარცხენა ნახევარი და შემდეგ 240 00:10:40,620 --> 00:10:42,610 მარჯვენა ნახევარში, და შემდეგ შერწყმა მათ ერთად. 241 00:10:42,610 --> 00:10:45,722 ისე როგორ უნდა დასალაგებლად სიაში ზომა 1, რომელიც შეიცავს მხოლოდ 6? 242 00:10:45,722 --> 00:10:46,430 მე უკვე გააკეთა. 243 00:10:46,430 --> 00:10:48,680 ეს სია, ზომა 1 დალაგებულია. 244 00:10:48,680 --> 00:10:52,140 >> როგორ დასალაგებლად ერთი სია ზომა 1, ე.წ. მარჯვენა ნახევარში. 245 00:10:52,140 --> 00:10:54,690 ისე, ძალიან, უკვე დახარისხებული. 246 00:10:54,690 --> 00:10:56,190 ნომერი 2 მარტო. 247 00:10:56,190 --> 00:11:00,160 ასე რომ, ახლა მე მაქვს ორი halves, მარცხენა და უფლება, მე უნდა შერწყმა მათ ერთად. 248 00:11:00,160 --> 00:11:01,800 ნება მომეცით მისცეს თავს ზოგიერთი დამატებითი ფართი. 249 00:11:01,800 --> 00:11:05,580 და 2 იქ, 6-იქ, რითაც 250 00:11:05,580 --> 00:11:10,740 დახარისხება სიაში, მარცხენა და მარჯვენა, და შერწყმის ერთად, საბოლოო ჯამში. 251 00:11:10,740 --> 00:11:12,160 ასე რომ, მე ოდნავ უკეთეს ფორმაში. 252 00:11:12,160 --> 00:11:16,250 მე არ კეთდება, რადგან ნათლად 4, 8, 2, 6 არ არის საბოლოო შეკვეთით, რომ მინდა. 253 00:11:16,250 --> 00:11:20,640 მაგრამ მე ახლა უკვე ორი სიები ზომა 2, ორივე, შესაბამისად, უკვე დახარისხებული. 254 00:11:20,640 --> 00:11:24,580 ასე რომ, ახლა თუ გადახვევა თქვენი აზრით თვალი, სად რომ დაგვტოვებთ? 255 00:11:24,580 --> 00:11:28,520 დავიწყე რვა ელემენტებს, მაშინ მე გახდნენ ის ქვემოთ მარცხენა ნახევარში 4, 256 00:11:28,520 --> 00:11:31,386 შემდეგ მარცხენა ნახევარში 2, და შემდეგ მარჯვენა ნახევარში 2, 257 00:11:31,386 --> 00:11:34,510 დავამთავრე, ამიტომ, დახარისხება მარცხენა ნახევარი 2, და მარჯვენა ნახევარში 2, 258 00:11:34,510 --> 00:11:37,800 ასე რომ, რა არის მესამე და საბოლოო ნაბიჯი აქ? 259 00:11:37,800 --> 00:11:41,290 მე უნდა გაერთიანდეს ორი სიები ზომა 2. 260 00:11:41,290 --> 00:11:42,040 მოდით წავიდეთ წინ. 261 00:11:42,040 --> 00:11:43,940 და ეკრანზე აქ, მისცეს ჩემთვის დამატებითი მეხსიერება, 262 00:11:43,940 --> 00:11:47,170 თუმცა ტექნიკურად, შეამჩნია, რომ მე მივიღე მთელი bunch of ცარიელი სივრცე ზევით 263 00:11:47,170 --> 00:11:47,670 არსებობს. 264 00:11:47,670 --> 00:11:50,044 თუ მინდა, რომ იყოს განსაკუთრებით ქმედითი სივრცე ბრძენი, 265 00:11:50,044 --> 00:11:52,960 მე შეიძლება მხოლოდ დაიწყოს მოძრავი ელემენტები უკან და მეოთხე, ზედა და ქვედა. 266 00:11:52,960 --> 00:11:55,460 მაგრამ მხოლოდ ვიზუალური სიცხადე, მე ვაპირებ, რომ ეს ქვემოთ, 267 00:11:55,460 --> 00:11:56,800 შენარჩუნება რამ ლამაზი და სუფთა. 268 00:11:56,800 --> 00:11:58,150 >> ასე რომ, მე მაქვს ორი სიები ზომა 2. 269 00:11:58,150 --> 00:11:59,770 პირველი სია 4 და 8. 270 00:11:59,770 --> 00:12:01,500 მეორე სიაში აქვს 2 და 6. 271 00:12:01,500 --> 00:12:03,950 მოდით შერწყმა იმ ერთად დახარისხებული მიზნით. 272 00:12:03,950 --> 00:12:09,910 2, რა თქმა უნდა, მოდის პირველი, მაშინ 4, მაშინ 6, მაშინ 8. 273 00:12:09,910 --> 00:12:12,560 და ახლა ჩვენ, როგორც ჩანს, მიღების სადღაც საინტერესო. 274 00:12:12,560 --> 00:12:15,720 ახლა მე დახარისხებული ნახევარი სიაში, და ერთსა, ეს 275 00:12:15,720 --> 00:12:18,650 ყველა კი ნომრები, მაგრამ ეს ნამდვილად, უბრალოდ დამთხვევა. 276 00:12:18,650 --> 00:12:22,220 და მე ახლა დახარისხებული მარცხენა ნახევარში, ასე, რომ ეს არის 2, 4, 6, 8 და. 277 00:12:22,220 --> 00:12:23,430 არაფერი არ არის მწყობრიდან. 278 00:12:23,430 --> 00:12:24,620 ეს იგრძნობა პროგრესი. 279 00:12:24,620 --> 00:12:26,650 >> ახლა ეს იგრძნობა მე უკვე საუბარი სამუდამოდ ახლა, 280 00:12:26,650 --> 00:12:29,850 ასე რომ, რა რჩება ჩანს, თუ ეს ალგორითმი, მართლაც, უფრო ეფექტური. 281 00:12:29,850 --> 00:12:31,766 მაგრამ ჩვენ ვაპირებთ მეშვეობით სუპერ მეთოდურად. 282 00:12:31,766 --> 00:12:34,060 კომპიუტერი, რა თქმა უნდა, ამის გაკეთება, როგორიცაა, რომ. 283 00:12:34,060 --> 00:12:34,840 ასე რომ, სად ვართ ჩვენ? 284 00:12:34,840 --> 00:12:36,180 ჩვენ დავიწყეთ რვა ელემენტებს. 285 00:12:36,180 --> 00:12:37,840 მე დახარისხებული მარცხენა ნახევარში 4. 286 00:12:37,840 --> 00:12:39,290 მე, როგორც ჩანს უნდა გაკეთდეს, რომ. 287 00:12:39,290 --> 00:12:42,535 ასე რომ, ახლა შემდეგი ნაბიჯი არის დასალაგებლად მარჯვენა ნახევარში 4. 288 00:12:42,535 --> 00:12:44,410 და ამ ნაწილში ჩვენ შეგვიძლია წავიდეთ მეშვეობით ცოტა მეტი 289 00:12:44,410 --> 00:12:47,140 სწრაფად, თუმცა თქვენ მისასალმებელი გადახვევა და პაუზის, უბრალოდ 290 00:12:47,140 --> 00:12:49,910 ვფიქრობ მეშვეობით ეს საკუთარი ტემპით, მაგრამ რა 291 00:12:49,910 --> 00:12:53,290 ახლა ჩვენ გვაქვს შესაძლებლობა, რომ ზუსტად იგივე ალგორითმი ოთხ 292 00:12:53,290 --> 00:12:54,380 სხვადასხვა ნომრები. 293 00:12:54,380 --> 00:12:57,740 >> ასე რომ, მოდით წავიდეთ წინ და ფოკუსირება მარჯვენა ნახევარში, რომელიც ჩვენ აქ ვართ. 294 00:12:57,740 --> 00:13:01,260 მარცხენა ნახევარში, რომ მარჯვენა ნახევარში, და ახლა 295 00:13:01,260 --> 00:13:04,560 მარცხენა ნახევარში მარცხენა ნახევარი რომ მარჯვენა ნახევარში, 296 00:13:04,560 --> 00:13:08,030 და როგორ უნდა დასალაგებლად სიაში ზომა 1 შემცველი მხოლოდ ნომერი 1? 297 00:13:08,030 --> 00:13:09,030 ეს უკვე გააკეთა. 298 00:13:09,030 --> 00:13:11,830 როგორ გავაკეთო იგივე სია ზომა 1 შემცველი მხოლოდ 7? 299 00:13:11,830 --> 00:13:12,840 ეს უკვე გააკეთა. 300 00:13:12,840 --> 00:13:16,790 ნაბიჯი სამი ამ ნახევარი შემდეგ არის შერწყმა ამ ორი ელემენტები 301 00:13:16,790 --> 00:13:20,889 ახალ სიაში ზომა 2, 1 და 7. 302 00:13:20,889 --> 00:13:23,180 არ ჩანს, არ გაკეთებულა ყველა რომ ბევრი საინტერესო მუშაობა. 303 00:13:23,180 --> 00:13:24,346 ვნახოთ, რა მოხდება შემდეგ. 304 00:13:24,346 --> 00:13:29,210 მე უბრალოდ დალაგებულია მარცხენა ნახევარში მარჯვენა ნახევარში ჩემი ორიგინალური შეყვანა. 305 00:13:29,210 --> 00:13:32,360 ახლა მოდით დასალაგებლად მარჯვენა ნახევარი, რომელიც შეიცავს 5 და 3. 306 00:13:32,360 --> 00:13:35,740 მოდით კიდევ ერთხელ შევხედოთ მარცხენა ნახევარი, დახარისხებული, მარჯვენა ნახევარში, დახარისხებული, 307 00:13:35,740 --> 00:13:39,120 და შერწყმა ამ ორი ერთად, ზოგიერთი დამატებითი სივრცე, 308 00:13:39,120 --> 00:13:41,670 3 მოდის პირველი, შემდეგ მოდის 5. 309 00:13:41,670 --> 00:13:46,190 ასე რომ, ახლა ჩვენ დახარისხებული მარცხენა ნახევარში მარჯვენა ნახევარში 310 00:13:46,190 --> 00:13:49,420 ორიგინალური პრობლემა, და მარჯვენა ნახევარში მარჯვენა ნახევარში 311 00:13:49,420 --> 00:13:50,800 ორიგინალური პრობლემა. 312 00:13:50,800 --> 00:13:52,480 რა არის მესამე და საბოლოო ნაბიჯი? 313 00:13:52,480 --> 00:13:54,854 ისე შერწყმა ამ ორი halves ერთად. 314 00:13:54,854 --> 00:13:57,020 ნება მომეცით მიიღოს თავს დამატებითი ფართი, მაგრამ, კიდევ ერთხელ, მე 315 00:13:57,020 --> 00:13:58,699 შეიძლება იყოს გამოყენებით, რომ თავისუფალ სივრცეში up დაბრუნება. 316 00:13:58,699 --> 00:14:00,490 მაგრამ ჩვენ ვაპირებთ, რომ შევინარჩუნოთ ეს მარტივი ვიზუალურად. 317 00:14:00,490 --> 00:14:07,070 მიადევნე თვალი შერწყმა ახლა 1, მაშინ 3 და შემდეგ 5, და შემდეგ 7. 318 00:14:07,070 --> 00:14:10,740 ამით რის გამოც მე ახლა მარჯვენა ნახევარში ორიგინალური პრობლემა 319 00:14:10,740 --> 00:14:12,840 რომ კარგად გადანაწილებული. 320 00:14:12,840 --> 00:14:13,662 >> ასე რომ, რა რჩება? 321 00:14:13,662 --> 00:14:16,120 ვგრძნობ, მე შენარჩუნება და განაცხადა, რომ იგივე რამ ისევ და ისევ, 322 00:14:16,120 --> 00:14:18,700 მაგრამ ეს ამრეკლი ის ფაქტი, რომ ჩვენ გამოყენებით უკან. 323 00:14:18,700 --> 00:14:21,050 პროცესი გამოყენებით ალგორითმი ისევ და ისევ, 324 00:14:21,050 --> 00:14:23,940 პატარა subsets of ორიგინალური პრობლემა. 325 00:14:23,940 --> 00:14:27,580 ასე რომ, ახლა აქვს მარცხენა დახარისხებული ნახევარი ორიგინალური პრობლემა. 326 00:14:27,580 --> 00:14:30,847 მე მაქვს უფლება დახარისხებული ნახევარი ორიგინალური პრობლემა. 327 00:14:30,847 --> 00:14:32,180 რა არის მესამე და საბოლოო ნაბიჯი? 328 00:14:32,180 --> 00:14:33,590 ოჰ, ეს შერწყმით. 329 00:14:33,590 --> 00:14:34,480 ასე რომ, მოდით გავაკეთოთ, რომ. 330 00:14:34,480 --> 00:14:36,420 მოდით გამოყოს გარკვეული დამატებითი მეხსიერება, მაგრამ ჩემო, ჩვენ 331 00:14:36,420 --> 00:14:37,503 ვერ დააყენა მას ვერსად ახლა. 332 00:14:37,503 --> 00:14:40,356 ჩვენ გვაქვს იმდენად სივრცეში არსებული ჩვენთვის, მაგრამ ჩვენ გავაგრძელებთ მარტივი. 333 00:14:40,356 --> 00:14:42,730 იმის ნაცვლად, რომ ბრუნდება და მეოთხე ჩვენი ორიგინალური მეხსიერება, 334 00:14:42,730 --> 00:14:44,480 მოდით უბრალოდ ეს ვიზუალურად ქვემოთ აქ ქვემოთ, 335 00:14:44,480 --> 00:14:47,240 დასრულდება up შერწყმის მარცხენა ნახევარში და მარჯვენა ნახევარში. 336 00:14:47,240 --> 00:14:49,279 >> ასე რომ შერწყმის, რა უნდა გავაკეთოთ? 337 00:14:49,279 --> 00:14:50,820 მე მინდა, რომ ელემენტები მიზნით. 338 00:14:50,820 --> 00:14:53,230 ასე რომ, ეძებს მარცხენა ნახევარში, მე ვერ ვხედავ პირველი ნომერი 2. 339 00:14:53,230 --> 00:14:55,230 მე შევხედოთ მარჯვენა ნახევარში, მე ვერ ვხედავ პირველი ნომერი 340 00:14:55,230 --> 00:14:58,290 არის 1, ასე აშკარად, რომელიც ნომერი არ მინდა pluck გარეთ, 341 00:14:58,290 --> 00:15:00,430 და პირველი ჩემი საბოლოო სიაში? 342 00:15:00,430 --> 00:15:01,449 რა თქმა უნდა, 1. 343 00:15:01,449 --> 00:15:02,990 ახლა მინდა ვთხოვო, რომ იგივე კითხვა. 344 00:15:02,990 --> 00:15:05,040 მარცხენა ნახევარში, მე მაინც ნომერი 2. 345 00:15:05,040 --> 00:15:07,490 მარჯვენა ნახევარში, მაქვს ნომერი 3. 346 00:15:07,490 --> 00:15:08,930 რომელი მინდა აირჩიოს? 347 00:15:08,930 --> 00:15:11,760 რა თქმა უნდა, ნომერი 2 ახლა შეამჩნია კანდიდატები 348 00:15:11,760 --> 00:15:13,620 4 მარცხენა, 3 მარჯვენა. 349 00:15:13,620 --> 00:15:15,020 მოდით, რა თქმა უნდა, აირჩიოს 3. 350 00:15:15,020 --> 00:15:18,020 ახლა კანდიდატები არიან 4 მარცხენა, 5 მარჯვენა. 351 00:15:18,020 --> 00:15:19,460 ჩვენ, რა თქმა უნდა, აირჩიოს 4. 352 00:15:19,460 --> 00:15:21,240 6 მარცხენა, 5 მარჯვენა. 353 00:15:21,240 --> 00:15:22,730 ჩვენ, რა თქმა უნდა, აირჩიოს 5. 354 00:15:22,730 --> 00:15:25,020 6 მარცხენა, 7 უფლება. 355 00:15:25,020 --> 00:15:29,320 ჩვენ ვირჩევთ 6, და მაშინ ჩვენ აირჩიეთ 7 და შემდეგ ჩვენ ვირჩევთ 8. 356 00:15:29,320 --> 00:15:30,100 Voila. 357 00:15:30,100 --> 00:15:34,370 >> ასე რომ, დიდი რაოდენობით სიტყვა შემდეგ, ჩვენ დახარისხებული ამ სიაში რვა ელემენტებს 358 00:15:34,370 --> 00:15:38,450 შევიდა სიაში ერთი გზით რვა, რომ იზრდება ყოველი ნაბიჯი, 359 00:15:38,450 --> 00:15:40,850 მაგრამ რამდენ დროს გააკეთა ის გვაძლევს, რომ. 360 00:15:40,850 --> 00:15:43,190 ისე მე შეგნებულად დაგებულ რამ, ხატოვნად 361 00:15:43,190 --> 00:15:46,330 აქ, ასე რომ ჩვენ შეგვიძლია სახის ვხედავ და ვაფასებ სამმართველოს 362 00:15:46,330 --> 00:15:49,060 დაპყრობის რომ ხდებოდა. 363 00:15:49,060 --> 00:15:52,830 >> მართლაც, თუ თქვენ ვიხსენებთ იმ ფონზე, მე დაუტოვებიათ ყველა ამ dotted ხაზები 364 00:15:52,830 --> 00:15:55,660 ამ ადგილის მფლობელებს, შეგიძლიათ, სახის, ვხედავ, საპირისპირო მიზნით, 365 00:15:55,660 --> 00:15:58,800 თუ სახის ვიხსენებთ ისტორია ახლა, ჩემი ორიგინალური სიაში 366 00:15:58,800 --> 00:16:00,250 არის, რა თქმა უნდა, ზომა 8. 367 00:16:00,250 --> 00:16:03,480 და მაშინ ადრე, მე ვიყავი საქმე ორი სიები ზომა 4, 368 00:16:03,480 --> 00:16:08,400 და შემდეგ ოთხი სიები ზომა 2, და შემდეგ რვა სიები ზომა 1. 369 00:16:08,400 --> 00:16:10,151 >> ასე რომ, რას ნიშნავს ეს, სახის, შეგახსენოთ? 370 00:16:10,151 --> 00:16:11,858 ისე, რა თქმა უნდა, ნებისმიერ ალგორითმები ჩვენ 371 00:16:11,858 --> 00:16:14,430 შევხედე ჯერჯერობით, სადაც ჩვენ გათიშე და გაყოფა, და გაყოფა, 372 00:16:14,430 --> 00:16:19,500 შენარჩუნება მქონე რამ კიდევ ერთხელ, და ერთხელ, იწვევს ამ ზოგადი იდეა. 373 00:16:19,500 --> 00:16:23,100 ასე რომ იქ რაღაც ლოგარითმული ხდება აქ. 374 00:16:23,100 --> 00:16:26,790 და ეს არ არის საკმაოდ ჟურნალი n, მაგრამ იქ ლოგარითმული კომპონენტი 375 00:16:26,790 --> 00:16:28,280 ის, რაც ჩვენ უბრალოდ გაკეთდეს. 376 00:16:28,280 --> 00:16:31,570 >> ახლა განვიხილოთ, თუ როგორ არის სინამდვილეში. 377 00:16:31,570 --> 00:16:34,481 ასე რომ შეხვიდეთ ო, ერთხელ იყო დიდი ქრონომეტრაჟი, 378 00:16:34,481 --> 00:16:36,980 როდესაც ჩვენ გავაკეთეთ რაღაც ორობითი ძებნა, როგორც ჩვენ ახლა უწოდებენ, 379 00:16:36,980 --> 00:16:40,090 გათიშე და დაპყრობას სტრატეგია მეშვეობით, რომელიც ჩვენ ვნახეთ, მაიკ სმიტი. 380 00:16:40,090 --> 00:16:41,020 ახლა ტექნიკურად. 381 00:16:41,020 --> 00:16:43,640 ეს არის ის, ჟურნალი ბაზა 2 ო, მაშინაც კი, მიუხედავად იმისა, რომ ყველაზე მათემატიკის გაკვეთილებს, 382 00:16:43,640 --> 00:16:45,770 10, როგორც წესი, ბაზა, რომ თქვენ ვივარაუდოთ. 383 00:16:45,770 --> 00:16:48,940 მაგრამ კომპიუტერის მეცნიერები თითქმის ყოველთვის ვფიქრობ და გაიგო თვალსაზრისით ბაზა 2, 384 00:16:48,940 --> 00:16:52,569 ასე რომ, ჩვენ, როგორც წესი, უბრალოდ, ვამბობთ ლოგი n, ნაცვლად ჟურნალი ბაზა 2 ო, 385 00:16:52,569 --> 00:16:55,110 მაგრამ ისინი ზუსტად ერთი და იმავე წელს მსოფლიოში კომპიუტერული 386 00:16:55,110 --> 00:16:57,234 მეცნიერებისა და როგორც განზე, არსებობს მუდმივი ფაქტორი 387 00:16:57,234 --> 00:17:01,070 განსხვავება ორ, ასე რომ სადაო მაინც, უფრო ფორმალური მიზეზის გამო. 388 00:17:01,070 --> 00:17:04,520 >> მაგრამ ახლა, რაც ჩვენ აღელვებს არის ეს მაგალითი. 389 00:17:04,520 --> 00:17:08,520 მოდით არ ადასტურებს მაგალითად, მაგრამ ცოტა გამოყენება, მაგალითად, ნომრები 390 00:17:08,520 --> 00:17:10,730 ხელთ, როგორც საღი აზრის შემოწმება, თუ გნებავთ. 391 00:17:10,730 --> 00:17:14,510 ასე რომ, ადრე ფორმულა ჟურნალი ბაზა 2 ო, მაგრამ რა არის n ამ შემთხვევაში. 392 00:17:14,510 --> 00:17:18,526 მე მქონდა n ორიგინალური ნომრები, ან 8 ორიგინალური ნომერი კონკრეტულად. 393 00:17:18,526 --> 00:17:20,359 ახლა ეს უკვე ცოტა ხოლო, მაგრამ მე საკმაოდ 394 00:17:20,359 --> 00:17:25,300 დარწმუნებული ვარ, რომ ჟურნალი ბაზა 2 ღირებულება 8: 3, 395 00:17:25,300 --> 00:17:29,630 და მართლაც, რა ლამაზი, რომ ის არის რომ 3 ზუსტად რაოდენობის ჯერ 396 00:17:29,630 --> 00:17:33,320 რომ თქვენ შეგიძლიათ დაყოფის სია სიგრძე 8 ისევ და ისევ, 397 00:17:33,320 --> 00:17:36,160 და ისევ, სანამ თქვენ დარჩა სიები უბრალოდ ზომა 1. 398 00:17:36,160 --> 00:17:36,660 მარჯვენა? 399 00:17:36,660 --> 00:17:40,790 8 მიდის 4, მიდის 2, მიდის 1, და ეს 400 00:17:40,790 --> 00:17:43,470 ამრეკლი ზუსტად რომ სურათი გვქონდა მხოლოდ ერთი წუთით წინ. 401 00:17:43,470 --> 00:17:47,160 ასე ცოტა საღი აზრის შეამოწმოს, თუ სად ლოგარითმი რეალურად ჩართული. 402 00:17:47,160 --> 00:17:50,180 >> ასე რომ, ახლა, რა არის ჩართული აქ? n. 403 00:17:50,180 --> 00:17:53,440 ასე რომ შეამჩნია, რომ ყოველ დროს მე გაყოფილი სიაში, 404 00:17:53,440 --> 00:17:58,260 თუმცა საპირისპირო მიზნით ისტორიაში აქ, მე მაინც აკეთებს N რამ. 405 00:17:58,260 --> 00:18:02,320 ეს შერწყმის ნაბიჯი საჭირო, რომ მე შეხება ყოველ ერთ ნომრები, 406 00:18:02,320 --> 00:18:05,060 იმისათვის, რომ ლღობას ის მისი შესაბამის ადგილას. 407 00:18:05,060 --> 00:18:10,760 ასე რომ, მიუხედავად იმისა, რომ სიმაღლე ამ სქემა არის ზომა შესვლა n n ან 3, 408 00:18:10,760 --> 00:18:13,860 კონკრეტულად, სხვა სიტყვებით, მე სამი დივიზია აქ. 409 00:18:13,860 --> 00:18:18,800 რამდენი სამუშაო გავაკეთო ჰორიზონტალურად გასწვრივ გრაფიკი ყოველ ჯერზე? 410 00:18:18,800 --> 00:18:21,110 >> ისე, მე n ნაბიჯები მუშაობა, იმიტომ, რომ თუ მე 411 00:18:21,110 --> 00:18:24,080 ოთხი ელემენტები და ოთხი ელემენტები, და მე უნდა შერწყმა მათ ერთად. 412 00:18:24,080 --> 00:18:26,040 მე უნდა გაიაროს ამ ოთხი და ამ ოთხი, 413 00:18:26,040 --> 00:18:28,123 საბოლოოდ შერწყმა მათ ისევ რვა ელემენტებს. 414 00:18:28,123 --> 00:18:32,182 თუ პირიქით მაქვს რვა თითების აქ, რომელიც მე არ, და რვა 415 00:18:32,182 --> 00:18:34,390 fingers-- ბოდიში თუ მე ოთხი თითების მეტი აქ, 416 00:18:34,390 --> 00:18:37,380 რომელიც მე, ოთხი თითი აქ, რომელიც მე, 417 00:18:37,380 --> 00:18:40,590 მაშინ, რომ იგივე მაგალითად, როგორც ადრე, თუ ამის გაკეთება 418 00:18:40,590 --> 00:18:44,010 რვა თითების თუმცა სულ, რაც შემიძლია, სახის, გააკეთოს. 419 00:18:44,010 --> 00:18:47,950 მე შემიძლია ზუსტად აქ, მაშინ მე რა თქმა უნდა, 420 00:18:47,950 --> 00:18:50,370 შერწყმა ყველა ამ სიებს ზომა 1 ერთად. 421 00:18:50,370 --> 00:18:54,050 მაგრამ მე, რა თქმა უნდა გამოიყურებოდეს თითოეულ ელემენტს ზუსტად ერთხელ. 422 00:18:54,050 --> 00:18:59,640 სიმაღლე ეს პროცესი შესვლა N, სიგანე ამ პროცესში, ასე ვთქვათ, 423 00:18:59,640 --> 00:19:02,490 N, ასე რომ, ჩვენ, როგორც ჩანს, აქვს, საბოლოო ჯამში, არის 424 00:19:02,490 --> 00:19:06,470 გაშვებული დრო ზომა N ჯერ შესვლა n. 425 00:19:06,470 --> 00:19:08,977 >> სხვა სიტყვებით, ჩვენ გაყოფილი სია, შესვლა N ჯერ, 426 00:19:08,977 --> 00:19:11,810 მაგრამ ყოველ ჯერზე ჩვენ გავაკეთეთ, ჩვენ გვქონდა შეეხოთ ყველა ერთი ელემენტები 427 00:19:11,810 --> 00:19:13,560 იმისათვის, რომ შერწყმა მათ ყველა ერთად, რომელიც 428 00:19:13,560 --> 00:19:18,120 იყო ო ნაბიჯი, ამიტომ ჩვენ გვაქვს N ჯერ შესვლა n, ან როგორც კომპიუტერის მეცნიერი ვიტყოდი, 429 00:19:18,120 --> 00:19:20,380 asymptotically, რომელიც იქნება დიდი სიტყვა 430 00:19:20,380 --> 00:19:22,810 აღწერს ზედა შეკრული გაშვებული დროს, 431 00:19:22,810 --> 00:19:28,010 ჩვენ გაშვებული დიდი o შესვლა n დროს, ასე ვთქვათ. 432 00:19:28,010 --> 00:19:31,510 >> ახლა ეს არის მნიშვნელოვანი, რადგან გავიხსენოთ, რა გაშვებული ჯერ 433 00:19:31,510 --> 00:19:34,120 ბუშტი დალაგების, და შერჩევის დალაგების, და Insertion დალაგების, 434 00:19:34,120 --> 00:19:38,200 და კიდევ რამდენიმე სხვა, რომ არსებობს, N კვადრატში იყო, სადაც ჩვენ ვიყავით. 435 00:19:38,200 --> 00:19:39,990 და თქვენ შეგიძლიათ, სახის, რომ ეს აქ. 436 00:19:39,990 --> 00:19:45,720 თუ n კვადრატში აშკარად N ჯერ n, მაგრამ აქ ჩვენ გვაქვს N ჯერ შესვლა n, 437 00:19:45,720 --> 00:19:48,770 და ჩვენ უკვე ვიცით კვირაში ნულოვანი, რომ ჟურნალი ო, ლოგარითმული, 438 00:19:48,770 --> 00:19:50,550 უკეთესია, ვიდრე რაღაც წრფივი. 439 00:19:50,550 --> 00:19:52,930 ყოველივე ამის შემდეგ, გავიხსენოთ სურათი წითელი და ყვითელი 440 00:19:52,930 --> 00:19:56,500 და მწვანე ხაზები, რომ ჩვენ გაამახვილა, რომ მწვანე ლოგარითმული ხაზი გაცილებით ნაკლები იყო. 441 00:19:56,500 --> 00:20:00,920 და, შესაბამისად, ბევრად უკეთესი და უფრო სწრაფად ვიდრე პირდაპირ ყვითელი და წითელი ხაზები, 442 00:20:00,920 --> 00:20:05,900 N ჯერ შესვლა n არის, რა თქმა უნდა, უკეთესი ვიდრე n ჯერ n, ან N კვადრატში. 443 00:20:05,900 --> 00:20:09,110 >> ასე რომ, ჩვენ, როგორც ჩანს, განსაზღვრული ალგორითმი შერწყმა 444 00:20:09,110 --> 00:20:11,870 ერთგვარი, რომელიც მართავს ბევრი სწრაფად დრო, და მართლაც, 445 00:20:11,870 --> 00:20:16,560 სწორედ ამიტომ, ამ კვირაში, როდესაც ჩვენ ვნახეთ, რომ კონკურსში შორის bubble 446 00:20:16,560 --> 00:20:20,750 დალაგების, შერჩევის დალაგების, და შერწყმა დალაგების, შერწყმა დალაგების ნამდვილად, ნამდვილად გაიმარჯვა. 447 00:20:20,750 --> 00:20:23,660 და მართლაც, ჩვენ კი არ დაველოდოთ ამისთვის bubble sort და შერჩევის დალაგება 448 00:20:23,660 --> 00:20:24,790 უნდა დაასრულოს. 449 00:20:24,790 --> 00:20:27,410 >> ახლა მოდით ერთი სხვა უღელტეხილზე ამ, ოდნავ მეტი 450 00:20:27,410 --> 00:20:31,030 ფორმალური თვალსაზრისით, მხოლოდ შემთხვევაში, ეს ეხმიანება უკეთესი 451 00:20:31,030 --> 00:20:33,380 ვიდრე, რომ უფრო მაღალი დონის დისკუსიაში. 452 00:20:33,380 --> 00:20:34,880 ასე რომ, აქ ალგორითმი ერთხელ. 453 00:20:34,880 --> 00:20:36,770 მოდით, ვკითხოთ საკუთარ თავს, რა ქრონომეტრაჟი 454 00:20:36,770 --> 00:20:39,287 არის ამ ალგორითმები სხვადასხვა ნაბიჯები? 455 00:20:39,287 --> 00:20:41,620 მოდით ეს გაყოფა პირველი შემთხვევაში და მეორე შემთხვევაში. 456 00:20:41,620 --> 00:20:46,280 თუ და სხვაგან IF შემთხვევაში, IF n ნაკლებია, ვიდრე 2, დააბრუნებს. 457 00:20:46,280 --> 00:20:47,580 იგრძნობა მუდმივი დრო. 458 00:20:47,580 --> 00:20:50,970 ეს, სახის, როგორც ორი ნაბიჯი IF n ნაკლებია, ვიდრე 2, შემდეგ დაბრუნდნენ. 459 00:20:50,970 --> 00:20:54,580 მაგრამ, როგორც ჩვენ განაცხადა ორშაბათს, მუდმივი, ან დიდი o 1, 460 00:20:54,580 --> 00:20:57,130 შეიძლება ორი ნაბიჯი, სამი ნაბიჯები, თუნდაც 1,000 ნაბიჯები. 461 00:20:57,130 --> 00:20:59,870 რა მნიშვნელობა აქვს არის ის, რომ მუდმივი რიგი ნაბიჯები. 462 00:20:59,870 --> 00:21:03,240 ასე რომ, ყვითელი ხაზი გაუსვა pseudocode აქ გადის, ჩვენ მოვუწოდებთ მას, 463 00:21:03,240 --> 00:21:04,490 მუდმივი დრო. 464 00:21:04,490 --> 00:21:06,780 ასე რომ, უფრო მეტად, და ჩვენ ვაპირებთ ამ 465 00:21:06,780 --> 00:21:09,910 იქნება იმდენად, რამდენადაც ჩვენ გააფორმოს ეს უფლება, ახლა ტ ო, 466 00:21:09,910 --> 00:21:15,030 ქრონომეტრაჟი პრობლემა რომელიც იღებს n somethings როგორც შეყვანის, 467 00:21:15,030 --> 00:21:19,150 უდრის დიდი o ერთი, თუ n ნაკლებია, ვიდრე 2. 468 00:21:19,150 --> 00:21:20,640 ასე რომ, ეს პირობითი, რომ. 469 00:21:20,640 --> 00:21:24,150 ასე რომ იყოს ნათელი, თუ n ნაკლებია, ვიდრე 2, ჩვენ გვაქვს ძალიან მოკლე ჩამონათვალი, მაშინ 470 00:21:24,150 --> 00:21:29,151 ქრონომეტრაჟი, ტ ო, სადაც n 1 ან 0, სწორედ ამ კონკრეტულ შემთხვევაში, 471 00:21:29,151 --> 00:21:30,650 ეს იქნება მუდმივი დრო. 472 00:21:30,650 --> 00:21:32,691 იგი აპირებს მიიღოს ერთი ნაბიჯი, ორი ნაბიჯი, რასაც. 473 00:21:32,691 --> 00:21:33,950 ეს არის ფიქსირებული რაოდენობის ნაბიჯები. 474 00:21:33,950 --> 00:21:38,840 >> ასე რომ, წვნიანი ნაწილი უნდა აუცილებლად უნდა იყოს სხვა შემთხვევაში, pseudocode. 475 00:21:38,840 --> 00:21:40,220 სხვაგან საქმე. 476 00:21:40,220 --> 00:21:44,870 Sort მარცხენა ნახევარში ელემენტები, ერთგვარი უფლება ნახევარი ელემენტები, შერწყმა დახარისხებული halves. 477 00:21:44,870 --> 00:21:46,800 რამდენი ხანი თითოეული იმ ნაბიჯებს? 478 00:21:46,800 --> 00:21:49,780 ისე, თუ გაშვებული დრო დასალაგებლად N ელემენტები 479 00:21:49,780 --> 00:21:53,010 არის, მოდით, მას ძალიან generically, ტ ო, 480 00:21:53,010 --> 00:21:55,500 შემდეგ დახარისხება მარცხენა ნახევარში ელემენტები 481 00:21:55,500 --> 00:21:59,720 არის, სახის, როგორც ამბობდა, T ო იყოფა 2, 482 00:21:59,720 --> 00:22:03,000 და ანალოგიურად დახარისხება მარჯვენა ნახევარში ელემენტები არის, სახის, როგორც ამბობდა, 483 00:22:03,000 --> 00:22:06,974 ტ ო იყოფა 2, ხოლო შემდეგ შერწყმის დახარისხებული halves. 484 00:22:06,974 --> 00:22:08,890 თუ მე მაქვს რამდენიმე რიგი ელემენტები აქ, 485 00:22:08,890 --> 00:22:11,230 ისევე როგორც ოთხი, და გარკვეული რაოდენობის ელემენტები აქ, ისევე როგორც ოთხი, 486 00:22:11,230 --> 00:22:14,650 და მე უნდა შერწყმა თითოეული ამ ოთხი , და თითოეული ამ ოთხი, ერთი 487 00:22:14,650 --> 00:22:17,160 მას შემდეგ, რაც სხვა, ასე რომ საბოლოო ჯამში, მე მაქვს რვა ელემენტებს. 488 00:22:17,160 --> 00:22:20,230 ეს იგრძნობა რომ დიდი o N ნაბიჯები? 489 00:22:20,230 --> 00:22:23,500 თუ მაქვს n თითების და თითოეული მათ უნდა გაერთიანდა ადგილი, 490 00:22:23,500 --> 00:22:25,270 რომ არის, კიდევ ერთი N ნაბიჯები. 491 00:22:25,270 --> 00:22:27,360 >> ასე რომ, მართლაც formulaically, ჩვენ შეგვიძლია გამოვხატოთ ამ, 492 00:22:27,360 --> 00:22:29,960 თუმცა ცოტა scarily პირველ რიგში ერთი შეხედვით, მაგრამ ეს არის ის, 493 00:22:29,960 --> 00:22:31,600 რომ captures ზუსტად რომ ლოგიკა. 494 00:22:31,600 --> 00:22:35,710 ქრონომეტრაჟი, ტ ო, თუ n მეტია ან ტოლია 2. 495 00:22:35,710 --> 00:22:42,500 ამ შემთხვევაში, რაღა შემთხვევაში, ტ ო გაყოფილი 2, პლუს T ო იყოფა 2, 496 00:22:42,500 --> 00:22:45,320 პლუს დიდი ო ო, ზოგიერთი ხაზოვანი რიგი ნაბიჯები, 497 00:22:45,320 --> 00:22:51,630 იქნებ ზუსტად n, შესაძლოა, 2-ჯერ n, მაგრამ ეს უხეშად, რათა ო. 498 00:22:51,630 --> 00:22:54,060 ასე რომ, ძალიან, არის თუ როგორ შეუძლია გამოხატოს ამ formulaically. 499 00:22:54,060 --> 00:22:56,809 ახლა თქვენ არ იცით, თუ არ თქვენ ჩაიწერა ეს თქვენი აზრით, 500 00:22:56,809 --> 00:22:58,710 ან ვეძებთ ის, რომ უკან სახელმძღვანელოს, რომელიც 501 00:22:58,710 --> 00:23:00,501 შეიძლება ცოტა შპარგალკა ბოლოს, 502 00:23:00,501 --> 00:23:03,940 მაგრამ ეს, მართლაც, აპირებს მოგვცეს დიდი ო ო ჟურნალი ო, 503 00:23:03,940 --> 00:23:06,620 იმიტომ, რომ არ განმეორდეს, რომ თქვენ ხედავს აქ ეკრანზე, 504 00:23:06,620 --> 00:23:09,550 თუ რეალურად ეს, ერთად უსასრულო რიგი მაგალითები, 505 00:23:09,550 --> 00:23:13,000 ან თქვენ ეს formulaically, თქვენ აკეთებთ ვხედავთ, რომ ეს, იმიტომ, რომ ეს ფორმულა 506 00:23:13,000 --> 00:23:17,100 თავად არის რეკურსიული, ერთად ტ n მეტი რამე მარჯვენა 507 00:23:17,100 --> 00:23:21,680 და ტ ო მეტი მარცხენა, ეს შეიძლება რეალურად იყოს გამოხატული, საბოლოო ჯამში, 508 00:23:21,680 --> 00:23:24,339 როგორც დიდი გადასვლა ო ჟურნალი ო. 509 00:23:24,339 --> 00:23:26,130 თუ არ ვარ დარწმუნებული, რომ ის, ჯარიმა, ახლა, უბრალოდ 510 00:23:26,130 --> 00:23:28,960 იღებს რწმენა, რომ ეს არის ის, მართლაც, რა, რომ განმეორების იწვევს, 511 00:23:28,960 --> 00:23:31,780 მაგრამ ეს არ არის უბრალოდ ცოტა მეტი მათემატიკური მიდგომა ეძებს 512 00:23:31,780 --> 00:23:36,520 ქრონომეტრაჟი შერწყმა დალაგების საფუძველზე მისი pseudocode მარტო. 513 00:23:36,520 --> 00:23:39,030 >> ახლა მოდით ცოტა მსუნთქავი ყველა რომ, 514 00:23:39,030 --> 00:23:41,710 და მიიღოს შევხედოთ გარკვეული ყოფილი სენატორი, რომელიც 515 00:23:41,710 --> 00:23:44,260 შეიძლება ცოტა ნაცნობი, ვინც დაჯდა Google- ის ერიკ 516 00:23:44,260 --> 00:23:48,410 Schmidt, ცოტა ხნის წინ, ინტერვიუში სცენაზე, თვალწინ მთელი bunch 517 00:23:48,410 --> 00:23:53,710 ადამიანი, საუბარი საბოლოოდ შესახებ თემა, რომელიც საკმაოდ ნაცნობი. 518 00:23:53,710 --> 00:23:54,575 მოდით შევხედოთ. 519 00:23:54,575 --> 00:24:01,020 520 00:24:01,020 --> 00:24:03,890 >> ერიკ შმიდტი: ახლა სენატორი, თქვენ აქ Google, 521 00:24:03,890 --> 00:24:09,490 და მე მინდა, ვფიქრობ, პრეზიდენტობის გასაუბრება. 522 00:24:09,490 --> 00:24:11,712 ახლა ეს იმისთვის, რომ მიიღოთ სამუშაოს როგორც პრეზიდენტი. 523 00:24:11,712 --> 00:24:12,670 პრეზიდენტი ობამა: მარჯვენა. 524 00:24:12,670 --> 00:24:13,940 ერიკ შმიდტი: და თქვენ ვაპირებ ამის გაკეთებას [INAUDIBLE] ახლა. 525 00:24:13,940 --> 00:24:15,523 ეს არის ასევე იმისთვის, რომ მიიღოთ სამუშაო Google. 526 00:24:15,523 --> 00:24:17,700 პრეზიდენტი ობამა: მარჯვენა. 527 00:24:17,700 --> 00:24:21,330 >> ერიკ შმიდტი: ჩვენ გვყავს კითხვები და ჩვენ ვთხოვთ ჩვენი კანდიდატების კითხვები, 528 00:24:21,330 --> 00:24:24,310 და ეს ერთი არის Larry შვიმერი. 529 00:24:24,310 --> 00:24:25,890 >> პრეზიდენტი ობამა: OK. 530 00:24:25,890 --> 00:24:27,005 >> ერიკ შმიდტი: რა? 531 00:24:27,005 --> 00:24:28,130 თქვენ ბიჭები ვფიქრობ მე kidding? 532 00:24:28,130 --> 00:24:30,590 ეს უფლება აქ. 533 00:24:30,590 --> 00:24:33,490 რა არის ყველაზე ეფექტური გზა დასალაგებლად მილიონი 32 bit რიცხვებით? 534 00:24:33,490 --> 00:24:37,560 535 00:24:37,560 --> 00:24:38,979 >> პრეზიდენტი ობამა: Well-- 536 00:24:38,979 --> 00:24:41,020 ერიკ შმიდტი: ზოგჯერ, იქნებ მე ვწუხვარ, maybe-- 537 00:24:41,020 --> 00:24:42,750 პრეზიდენტი ობამა: არა, არა, არა, არა, არა, მე აზრით 538 00:24:42,750 --> 00:24:43,240 ერიკ შმიდტი: ეს არ არის it-- 539 00:24:43,240 --> 00:24:45,430 პრეზიდენტი ობამა: მე ვფიქრობ, მე ვფიქრობ, რომ ბუშტი 540 00:24:45,430 --> 00:24:46,875 სახის იქნება არასწორი გზით წასვლა. 541 00:24:46,875 --> 00:24:49,619 542 00:24:49,619 --> 00:24:50,535 ერიკ შმიდტი: კარგით. 543 00:24:50,535 --> 00:24:52,200 ვინ უთხრა, ეს? 544 00:24:52,200 --> 00:24:54,020 OK. 545 00:24:54,020 --> 00:24:55,590 მე არ კომპიუტერულ მეცნიერებათა on-- 546 00:24:55,590 --> 00:24:58,986 >> პრეზიდენტი ობამა: ჩვენ გვაქვს მიიღო ჩვენი ჯაშუშების არსებობს. 547 00:24:58,986 --> 00:24:59,860 პროფესორი: ყველა უფლება. 548 00:24:59,860 --> 00:25:03,370 მოდით დატოვება ჩვენს უკან ახლა თეორიული სამყაროში ალგორითმები 549 00:25:03,370 --> 00:25:06,520 ამ ასიმპტოტური ანალიზი მისი, და დაბრუნდეს ზოგიერთი თემა 550 00:25:06,520 --> 00:25:09,940 კვირაში ნულოვანი და ერთი და დაწყების ამოიღონ ზოგიერთი სასწავლო დისკები, 551 00:25:09,940 --> 00:25:10,450 თუ გნებავთ. 552 00:25:10,450 --> 00:25:13,241 ასე, რომ თქვენ ნამდვილად არ მესმის, საბოლოო ჯამში, მიწიდან მდე, რა არის 553 00:25:13,241 --> 00:25:16,805 მიმდინარეობს ქვეშ hood, როდესაც თქვენ წერენ, შედგენა, და შეასრულოს პროგრამები. 554 00:25:16,805 --> 00:25:19,680 შეგახსენებთ, კერძოდ, რომ ეს იყო პირველი C პროგრამის ჩვენ შევხედე, 555 00:25:19,680 --> 00:25:22,840 კანონიკური, მარტივი პროგრამა სახის, შედარებით რომ ვთქვათ, 556 00:25:22,840 --> 00:25:24,620 სადაც, იგი ბეჭდავს, Hello World. 557 00:25:24,620 --> 00:25:27,610 და გავიხსენოთ, რომ მე ვთქვი, რომ ეს პროცესი რომ კოდის გადის 558 00:25:27,610 --> 00:25:28,430 სწორედ ეს არის. 559 00:25:28,430 --> 00:25:31,180 თქვენ თქვენი კოდის, გაივლის ის მეშვეობით შემდგენელი, როგორიც Clang, 560 00:25:31,180 --> 00:25:34,650 და გარეთ მოდის ობიექტის კოდი, რომელიც შეიძლება ასე გამოიყურება, zeros და პირობა 561 00:25:34,650 --> 00:25:37,880 რომ კომპიუტერის CPU, ცენტრალური გადამამუშავებელი ერთეული ან ტვინის, 562 00:25:37,880 --> 00:25:39,760 საბოლოო ჯამში ესმის. 563 00:25:39,760 --> 00:25:42,460 >> გამოდის, რომ ეს არის ის ცოტა გამარტივება, 564 00:25:42,460 --> 00:25:44,480 რომ ჩვენ ახლა პოზიცია აჯავრებენ გარდა 565 00:25:44,480 --> 00:25:46,720 უნდა გვესმოდეს, რა არის მართლაც მიმდინარეობს ქვეშ hood 566 00:25:46,720 --> 00:25:48,600 ყოველ დროს, თქვენ აწარმოებს Clang, ან უფრო ზოგადად, 567 00:25:48,600 --> 00:25:53,040 ყოველ ჯერზე თქვენ პროგრამა, გამოყენებით ჩადება და CF 50 IDE. 568 00:25:53,040 --> 00:25:56,760 კერძოდ, პერსონალის მოსწონს ეს არის პირველი გამომუშავებული, 569 00:25:56,760 --> 00:25:58,684 როდესაც თქვენ პირველად კომპილაციის თქვენი პროგრამა. 570 00:25:58,684 --> 00:26:00,600 სხვა სიტყვებით, როდესაც თქვენ მიიღოს თქვენი კოდის 571 00:26:00,600 --> 00:26:04,390 და კომპილირება, რა არის პირველი მიმდინარეობს outputted მიერ Clang 572 00:26:04,390 --> 00:26:06,370 არის რაღაც ცნობილია, როგორც ასამბლეის კოდი. 573 00:26:06,370 --> 00:26:08,990 და სინამდვილეში, ეს გამოიყურება ზუსტად მოსწონს ეს. 574 00:26:08,990 --> 00:26:11,170 >> მე გაიქცა ბრძანებას ბრძანების ხაზი ადრე. 575 00:26:11,170 --> 00:26:16,260 Clang dash კაპიტალის s hello.c, და ეს ის ფაილი 576 00:26:16,260 --> 00:26:19,490 ჩემთვის მოუწოდა hello.s, შიგნით რაც იყო ზუსტად 577 00:26:19,490 --> 00:26:22,290 ამ შინაარსის, და ცოტა მეტი ზემოთ და ცოტა უფრო ქვემოთ, 578 00:26:22,290 --> 00:26:25,080 მაგრამ მე დააყენა juiciest აქ ეკრანზე. 579 00:26:25,080 --> 00:26:29,190 და თუ ყურადღებით დავაკვირდებით, დავინახავთ, მინიმუმ რამდენიმე ნაცნობი სიტყვა. 580 00:26:29,190 --> 00:26:31,330 ჩვენ გვყავს მთავარი ზედა. 581 00:26:31,330 --> 00:26:35,140 ჩვენ printf ქვემოთ შუა. 582 00:26:35,140 --> 00:26:38,670 ჩვენ ასევე გვაქვს hello მსოფლიოში წარმატებული ო შეთავაზებები ქვემოთ. 583 00:26:38,670 --> 00:26:42,450 >> და ყველაფერი აქ ძალიან დაბალი დონე მითითებები 584 00:26:42,450 --> 00:26:45,500 რომ კომპიუტერის CPU ესმის. 585 00:26:45,500 --> 00:26:50,090 CPU ინსტრუქციას, რომ გადაადგილება მეხსიერება გარშემო, რომ დატვირთვის strings მეხსიერება, 586 00:26:50,090 --> 00:26:52,750 და საბოლოო ჯამში, ბეჭდვითი რამ ეკრანზე. 587 00:26:52,750 --> 00:26:56,780 ახლა რა ხდება, მიუხედავად იმისა, რომ მას შემდეგ, რაც ამ ასამბლეის კოდი გენერირდება? 588 00:26:56,780 --> 00:26:59,964 საბოლოო ჯამში, თქვენ, რა თქმა უნდა, კიდევ წარმოქმნის ობიექტის კოდი. 589 00:26:59,964 --> 00:27:02,630 მაგრამ იმ ნაბიჯებს, რომელიც უნდა ნამდვილად უკვე მიმდინარეობს ქვეშ hood 590 00:27:02,630 --> 00:27:04,180 გამოიყურება უფრო მოსწონს ეს. 591 00:27:04,180 --> 00:27:08,390 კოდის ხდება ასამბლეის კოდი, რომელიც შემდეგ ხდება ობიექტის კოდი, 592 00:27:08,390 --> 00:27:11,930 და ოპერატიული სიტყვა აქ არის ის, რომ, როდესაც თქვენ კომპილაციის თქვენი კოდი, 593 00:27:11,930 --> 00:27:16,300 გარეთ მოდის ასამბლეის კოდი და შემდეგ როდესაც თქვენ შეიკრიბება თქვენი ასამბლეის კოდი, 594 00:27:16,300 --> 00:27:17,800 გარეთ მოდის ობიექტის კოდი. 595 00:27:17,800 --> 00:27:20,360 >> ახლა Clang არის სუპერ დახვეწილი, როგორც ბევრი შემდგენელი, 596 00:27:20,360 --> 00:27:23,151 და ეს იმას ყველა ეს ნაბიჯი ერთად, და ეს სულაც არ 597 00:27:23,151 --> 00:27:25,360 გამომავალი ნებისმიერი შუალედური ფაილი, რომელიც თქვენ კი ვხედავ. 598 00:27:25,360 --> 00:27:28,400 უბრალოდ ადგენს რამ, რომელიც არის ზოგადი ტერმინი, რომელიც 599 00:27:28,400 --> 00:27:30,000 აღწერს ამ პროცესში. 600 00:27:30,000 --> 00:27:32,000 მაგრამ თუ ნამდვილად გსურთ უნდა იყოს კონკრეტული, არსებობს 601 00:27:32,000 --> 00:27:34,330 ბევრი უფრო ხდება იქ. 602 00:27:34,330 --> 00:27:38,860 >> მაგრამ მოდით, ასევე განიხილოს ახლა, რომ თუნდაც რომ სუპერ მარტივი პროგრამა, hello.c, 603 00:27:38,860 --> 00:27:40,540 მოუწოდა ფუნქცია. 604 00:27:40,540 --> 00:27:41,870 მან მოუწოდა printf. 605 00:27:41,870 --> 00:27:46,900 მაგრამ მე არ წერენ printf, რა თქმა უნდა, რომ გააჩნია გ, ასე ვთქვათ. 606 00:27:46,900 --> 00:27:51,139 ეს ფუნქცია შეგახსენებთ, რომ არის განაცხადა სტანდარტული io.h, რომელიც 607 00:27:51,139 --> 00:27:53,180 არის header ფაილი, რომელიც არის თემა, ჩვენ, ფაქტობრივად, 608 00:27:53,180 --> 00:27:55,780 ჩაყვინთვის შევიდა უფრო სიღრმისეული ადრე ხანგრძლივი. 609 00:27:55,780 --> 00:27:58,000 მაგრამ header ფაილი როგორც წესი, თან 610 00:27:58,000 --> 00:28:02,920 მიერ კოდი ფაილი, კოდის ფაილი, ასე რომ ჰგავს არსებობს სტანდარტული io.h. 611 00:28:02,920 --> 00:28:05,930 >> შუალედში წინ, ვინმე, ან ვინმეს, ასევე წერს 612 00:28:05,930 --> 00:28:11,040 ფაილი სახელად სტანდარტული io.c, ამ რომელიც ფაქტობრივი განმარტებები, 613 00:28:11,040 --> 00:28:15,220 ან შესრულება printf, და მტევნების სხვა ფუნქციები, 614 00:28:15,220 --> 00:28:16,870 რეალურად დაწერილია. 615 00:28:16,870 --> 00:28:22,140 ასე რომ, თუ გავითვალისწინებთ, რომ, თუ გავითვალისწინებთ, რომ აქ მარცხენა, hello.c, რომ როდესაც 616 00:28:22,140 --> 00:28:26,250 შედგენილი, გვაძლევს hello.s, მაშინაც კი, თუ Clang არ ადარდებს დაზოგვის ადგილი 617 00:28:26,250 --> 00:28:31,360 ჩვენ ვხედავთ, და რომ ასამბლეის კოდი იღებს შეიკრიბნენ შევიდა hello.o, რომელიც 618 00:28:31,360 --> 00:28:34,630 არის, მართლაც, რა სახელი მაშინვე, როგორც კი თქვენ შედგენა წყაროს 619 00:28:34,630 --> 00:28:39,350 კოდი შევიდა ობიექტის კოდი, მაგრამ არ არის საკმაოდ მზადაა შეასრულოს ის არის, 620 00:28:39,350 --> 00:28:41,460 იმიტომ, რომ კიდევ ერთი ნაბიჯი უნდა მოხდეს, და აქვს 621 00:28:41,460 --> 00:28:44,440 ხდებოდა, რომ ბოლო რამდენიმე კვირის განმავლობაში, ალბათ, არ ვიცი თქვენ. 622 00:28:44,440 --> 00:28:47,290 >> კერძოდ სადღაც ამ CS50 IDE, და ეს, 623 00:28:47,290 --> 00:28:49,870 ძალიან, იქნება ცოტა გამარტივება მომენტში, 624 00:28:49,870 --> 00:28:54,670 არ არის, ან იყო იმ დროს, ფაილი სახელად სტანდარტული io.c, 625 00:28:54,670 --> 00:28:58,440 რომ ვინმე დგება სტანდარტული io.s ან ექვივალენტი, 626 00:28:58,440 --> 00:29:02,010 რომ ვინმე შემდეგ შეიკრიბნენ შევიდა სტანდარტული io.o, 627 00:29:02,010 --> 00:29:04,600 ან გამოდის, შევიდა ოდნავ განსხვავებული ფაილი 628 00:29:04,600 --> 00:29:07,220 ფორმატი, რომელიც შეიძლება ჰქონდეს განსხვავებული ფაილის გაფართოება საერთოდ, 629 00:29:07,220 --> 00:29:11,720 მაგრამ თეორიულად და კონცეპტუალურად, ზუსტად იმ ნაბიჯებს, უნდა მოხდეს გარკვეული ფორმით. 630 00:29:11,720 --> 00:29:14,060 რომელი ვთქვა, რომ ახლა როდესაც მე პროგრამის წერა, 631 00:29:14,060 --> 00:29:17,870 hello.c, რომ ამბობს, Hello World, და მე გამოყენებით სხვისი კოდი 632 00:29:17,870 --> 00:29:22,480 printf, რომელიც იყო ერთხელ დროს, ფაილი სახელად სტანდარტული io.c, 633 00:29:22,480 --> 00:29:26,390 რატომღაც მე უნდა მიიღოს ჩემი ობიექტის კოდი, ჩემი zeros და პირობა, 634 00:29:26,390 --> 00:29:29,260 და რომ პირის ობიექტი კოდი, ან zeros და პირობა, 635 00:29:29,260 --> 00:29:34,970 და როგორღაც დაუკავშირონ მათი ერთად შევიდა ერთი საბოლოო ფაილი, ე.წ. hello, რომ 636 00:29:34,970 --> 00:29:38,070 აქვს ყველა zeros და ვინც ჩემი მთავარი ფუნქცია, 637 00:29:38,070 --> 00:29:40,830 და ყველა zeros და პირობა printf. 638 00:29:40,830 --> 00:29:44,900 >> და მართლაც, ბოლო პროცესი მოუწოდა, აკავშირებს თქვენი ობიექტის კოდი. 639 00:29:44,900 --> 00:29:47,490 გამოშვება, რომელიც არის შესრულებადი ფაილი. 640 00:29:47,490 --> 00:29:49,780 ასე რომ, სამართლიანობა, ზე დღის ბოლოს, არაფერი 641 00:29:49,780 --> 00:29:52,660 შეიცვალა კვირაში ერთი, როდესაც ჩვენ პირველად დაიწყო შედგენა პროგრამები. 642 00:29:52,660 --> 00:29:55,200 მართლაც, ეს ყველაფერი უკვე ხდება ქვეშ hood, 643 00:29:55,200 --> 00:29:57,241 მაგრამ ახლა ჩვენ პოზიცია სადაც ჩვენ შეგვიძლია რეალურად 644 00:29:57,241 --> 00:29:58,794 აჯავრებენ გარდა ამ სხვადასხვა ნაბიჯები. 645 00:29:58,794 --> 00:30:00,710 და მართლაც, ბოლოს დღეს, ჩვენ ჯერ კიდევ 646 00:30:00,710 --> 00:30:04,480 მარცხენა zeros და პირობა, რომელიც ფაქტიურად დიდი segue ახლა 647 00:30:04,480 --> 00:30:08,620 სხვა შესაძლებლობების C, რომ ჩვენ არ ჰქონდა ბერკეტი სავარაუდოდ 648 00:30:08,620 --> 00:30:11,250 დღემდე, რომელიც ცნობილია როგორც bitwise ოპერატორები. 649 00:30:11,250 --> 00:30:15,220 სხვა სიტყვებით, დღემდე, ნებისმიერ დროს ჩვენ განხილული მონაცემების C ან ცვლადები C, 650 00:30:15,220 --> 00:30:17,660 ჩვენ გვქონდა რამ, როგორიცაა chars და მოძრავი და ებზე 651 00:30:17,660 --> 00:30:21,990 და მიისწრაფვის და ორადგილიანი და მოსწონს, მაგრამ ყველა იმ მინიმუმ რვა ბიტი. 652 00:30:21,990 --> 00:30:25,550 ჩვენ არასდროს გაუკეთებია შეძლო მანიპულირება ინდივიდუალური ბიტი, 653 00:30:25,550 --> 00:30:28,970 მიუხედავად იმისა, რომ ინდივიდუალური ცოტა, იცით, შეიძლება წარმოადგენდეს 0 და 1. 654 00:30:28,970 --> 00:30:32,640 ახლა ირკვევა, რომ C, თქვენ შეგიძლიათ მიიღოთ დაშვება ინდივიდუალური ბიტი, 655 00:30:32,640 --> 00:30:35,530 თუ თქვენ იცით, სინტაქსი, , რომლითაც მათ. 656 00:30:35,530 --> 00:30:38,010 >> მოდით შევხედოთ განთავსებულია bitwise ოპერატორები. 657 00:30:38,010 --> 00:30:41,700 ასე რომ, სურათები აქ არის რამდენიმე სიმბოლოები, ჩვენ, სახის, სახის, მინახავს ადრე. 658 00:30:41,700 --> 00:30:45,580 მე ვხედავ ampersand, ვერტიკალური ბარი, და სხვები, ასევე, 659 00:30:45,580 --> 00:30:49,430 და გავიხსენოთ, რომ ampersand ampersand არის რაღაც ჩვენ არ მინახავს ადრე. 660 00:30:49,430 --> 00:30:54,060 ლოგიკური და ოპერატორს, სადაც თქვენ უნდა ორი მათგანი ერთად, ან ლოგიკური ან 661 00:30:54,060 --> 00:30:56,300 ოპერატორი, სადაც თქვენ აქვს ორი ვერტიკალური ბარები. 662 00:30:56,300 --> 00:31:00,550 Bitwise ოპერატორები, რომელიც ჩვენ იხილეთ მოქმედებს ბიტი ინდივიდუალურად, 663 00:31:00,550 --> 00:31:03,810 ისარგებლეთ ერთი ampersand, რომელიც ერთი ვერტიკალური ბარი, caret სიმბოლო 664 00:31:03,810 --> 00:31:06,620 გააჩნია შემდეგი, პატარა tilde, და შემდეგ დატოვა 665 00:31:06,620 --> 00:31:08,990 bracket მარცხენა კვადრატული ფრჩხილი, ან მარჯვენა bracket უფლება bracket. 666 00:31:08,990 --> 00:31:10,770 თითოეული ეს აქვს სხვადასხვა მნიშვნელობა. 667 00:31:10,770 --> 00:31:11,950 >> ფაქტობრივად, მოდით შევხედოთ. 668 00:31:11,950 --> 00:31:16,560 მოდით წავიდეთ ძველი სკოლა დღეს, და გამოყენების სენსორული ეხლა წარსულის, 669 00:31:16,560 --> 00:31:18,002 ცნობილია, როგორც თეთრ დაფაზე. 670 00:31:18,002 --> 00:31:19,710 და ეს თეთრი დაფა აპირებს საშუალებას მოგვცემს 671 00:31:19,710 --> 00:31:27,360 გამოხატოს ზოგიერთი საკმაოდ მარტივი და სიმბოლოები, უფრო სწორად რამდენიმე საკმაოდ მარტივი ფორმულები, 672 00:31:27,360 --> 00:31:29,560 რომ ჩვენ შეგვიძლია მაშინ საბოლოოდ ბერკეტები, რათა 673 00:31:29,560 --> 00:31:33,230 წვდომის ინდივიდუალური ბიტი ფარგლებში C პროგრამა. 674 00:31:33,230 --> 00:31:34,480 სხვა სიტყვებით, მოდით გავაკეთოთ ეს. 675 00:31:34,480 --> 00:31:37,080 მოდით პირველი საუბარი დიდი წუთით ampersand, 676 00:31:37,080 --> 00:31:39,560 რომელიც არის bitwise და ოპერატორს. 677 00:31:39,560 --> 00:31:42,130 სხვა სიტყვებით, ეს არის ოპერატორი, რომელიც საშუალებას იძლევა 678 00:31:42,130 --> 00:31:45,930 ჩემთვის აქვს მარცხენა ცვლადი როგორც წესი, და მარჯვენა ცვლადი, 679 00:31:45,930 --> 00:31:50,640 ან ინდივიდუალური ღირებულება, რომ თუ ჩვენ და მათ ერთად, მაძლევს საბოლოო შედეგი. 680 00:31:50,640 --> 00:31:51,560 ასე რომ, რას ვგულისხმობ? 681 00:31:51,560 --> 00:31:54,840 იმ შემთხვევაში, თუ პროგრამა, თქვენ გაქვთ ცვლადი რომ მაღაზიებში ერთი ამ ღირებულებების, 682 00:31:54,840 --> 00:31:58,000 ან მოდით შეინახოს იგი მარტივი, და მხოლოდ წერენ გარეთ zeros და პირობა ინდივიდუალურად, 683 00:31:58,000 --> 00:32:00,940 აქ არის თუ როგორ ampersand ოპერატორი მუშაობს. 684 00:32:00,940 --> 00:32:06,400 0 ampersand 0 აპირებს უდრის 0. 685 00:32:06,400 --> 00:32:07,210 ახლა რატომ არის, რომ? 686 00:32:07,210 --> 00:32:09,291 >> ეს ძალიან ჰგავს ლოგიკური გამონათქვამები, 687 00:32:09,291 --> 00:32:10,540 რომ ჩვენ განიხილეს დღემდე. 688 00:32:10,540 --> 00:32:15,800 თუ ფიქრობთ, რომ მას შემდეგ, რაც ყველა, 0 არის ყალბი, 0 არის ყალბი, ყალბი და ცრუ 689 00:32:15,800 --> 00:32:18,720 არის, როგორც ჩვენ განვიხილეთ ლოგიკურად, ასევე ყალბი. 690 00:32:18,720 --> 00:32:20,270 ასე რომ, ჩვენ კიდევ 0 აქაც. 691 00:32:20,270 --> 00:32:24,390 თუ თქვენ მიიღოს 0 ampersand 1, ისე, რომ, ძალიან, 692 00:32:24,390 --> 00:32:29,890 იქნება 0, რადგან ამ მარცხენა გამოხატვის უნდა იყოს ჭეშმარიტი ან 1, 693 00:32:29,890 --> 00:32:32,360 ეს უნდა იყოს ჭეშმარიტი და მართალია. 694 00:32:32,360 --> 00:32:36,320 მაგრამ აქ ჩვენ გვაქვს ყალბი და ჭეშმარიტი, ან 0 და 1. 695 00:32:36,320 --> 00:32:42,000 ახლა, თუ ჩვენ გვაქვს 1 ampersand 0, რომ, ძალიან, იქნება 0, 696 00:32:42,000 --> 00:32:47,240 და თუ ჩვენ 1 ampersand 1, საბოლოოდ არ გვაქვს 1 bit. 697 00:32:47,240 --> 00:32:50,340 ასე რომ, სხვა სიტყვებით რომ ვთქვათ, ჩვენ არ ვაკეთებთ არაფერი საინტერესო ამ ოპერატორს 698 00:32:50,340 --> 00:32:51,850 უბრალოდ არ არის, ამ ampersand ოპერატორი. 699 00:32:51,850 --> 00:32:53,780 ეს არის bitwise და ოპერატორს. 700 00:32:53,780 --> 00:32:57,290 მაგრამ ეს ინგრედიენტები მეშვეობით, რომელიც ჩვენ შეგვიძლია გავაკეთოთ 701 00:32:57,290 --> 00:32:59,240 საინტერესო რამ, როგორც ჩვენ მალე. 702 00:32:59,240 --> 00:33:02,790 >> ახლა მოდით შევხედოთ მხოლოდ ერთი ვერტიკალური ბარი მეტი აქ უფლება. 703 00:33:02,790 --> 00:33:06,710 თუ მე მაქვს 0 ცოტა და მე ან ის, რომ bitwise 704 00:33:06,710 --> 00:33:11,030 ან ოპერატორის, მეორე 0 bit, რომ აპირებს მომეცი 0. 705 00:33:11,030 --> 00:33:17,540 თუ მე ავიღებ 0 bit და ან ეს 1 bit, მაშინ მე ვაპირებ, რომ მიიღოთ 1. 706 00:33:17,540 --> 00:33:19,830 და სინამდვილეში, მხოლოდ სიწმინდე, ნება მომეცით დაბრუნდეს, 707 00:33:19,830 --> 00:33:23,380 ისე, რომ ჩემი ვერტიკალური ბარები არ ცდება 1 ს. 708 00:33:23,380 --> 00:33:26,560 მოდი გადავწერ ყველა ჩემი 1 ცოტა მეტი 709 00:33:26,560 --> 00:33:32,700 ნათლად, ისე, რომ ჩვენ მომავალ ვხედავ, თუ აქვს 1 ან 0, რომელიც იქნება 1, 710 00:33:32,700 --> 00:33:39,060 და თუ მე მაქვს 1 ან 1, რომ ძალიან, იქნება 1. 711 00:33:39,060 --> 00:33:42,900 ასე რომ თქვენ ხედავთ, ლოგიკურად რომ OR ოპერატორი იქცევა განსხვავებულად. 712 00:33:42,900 --> 00:33:48,070 ეს მაძლევს 0 ან 0 მაძლევს 0, მაგრამ ყველა სხვა კომბინაცია მაძლევს 1. 713 00:33:48,070 --> 00:33:52,480 ასე რომ, სანამ მე ერთი 1- ფორმულა, შედეგი იქნება 1. 714 00:33:52,480 --> 00:33:55,580 >> ამის საპირისპიროდ ერთად და ოპერატორი, ampersand, 715 00:33:55,580 --> 00:34:00,940 მხოლოდ იმ შემთხვევაში, მე მაქვს ორი 1 წელს განტოლება, შემიძლია რეალურად მიიღოთ 1 out. 716 00:34:00,940 --> 00:34:02,850 ახლა არის რამდენიმე სხვა ოპერატორები, ასევე. 717 00:34:02,850 --> 00:34:04,810 ერთ-ერთი მათგანი არის ცოტა უფრო ჩართული. 718 00:34:04,810 --> 00:34:07,980 ნება მომეცით წავიდეთ წინ და წაშლას ამ გასათავისუფლებლად მდე გარკვეული სივრცე. 719 00:34:07,980 --> 00:34:13,020 720 00:34:13,020 --> 00:34:16,460 და მოდით შევხედოთ caret სიმბოლო, მხოლოდ ერთი წუთით. 721 00:34:16,460 --> 00:34:18,210 ეს არის, როგორც წესი, ხასიათი შეგიძლიათ ჩაწეროთ 722 00:34:18,210 --> 00:34:21,420 თქვენს კლავიატურაზე ჩატარების Shift და მაშინ ერთ ნომრები atop თქვენი აშშ 723 00:34:21,420 --> 00:34:22,250 კლავიატურაზე. 724 00:34:22,250 --> 00:34:26,190 >> ასე რომ, ეს არის ექსკლუზიური ან ოპერატორის, განსაკუთრებული ან. 725 00:34:26,190 --> 00:34:27,790 ასე რომ, ჩვენ უბრალოდ დაინახა ან ოპერატორის. 726 00:34:27,790 --> 00:34:29,348 ეს არის განსაკუთრებული ან ოპერატორს. 727 00:34:29,348 --> 00:34:30,639 რა არის რეალურად განსხვავება? 728 00:34:30,639 --> 00:34:34,570 ისე მოდით შევჩერდეთ ფორმულა, და გამოიყენოს ეს ინგრედიენტები საბოლოოდ. 729 00:34:34,570 --> 00:34:37,690 0 XOR 0. 730 00:34:37,690 --> 00:34:39,650 მე ვაპირებ ვთქვა ყოველთვის 0. 731 00:34:39,650 --> 00:34:41,400 ეს არის განმარტება XOR. 732 00:34:41,400 --> 00:34:47,104 0 XOR 1 იქნება 1. 733 00:34:47,104 --> 00:34:58,810 1 XOR 0 იქნება 1, და 1 XOR 1 იქნება? 734 00:34:58,810 --> 00:34:59,890 არასწორი? 735 00:34:59,890 --> 00:35:00,520 ან მარჯვენა? 736 00:35:00,520 --> 00:35:01,860 მე არ ვიცი. 737 00:35:01,860 --> 00:35:02,810 0. 738 00:35:02,810 --> 00:35:04,700 ახლა, რა ხდება აქ? 739 00:35:04,700 --> 00:35:06,630 ისე ვიფიქროთ სახელი ამ ოპერატორს. 740 00:35:06,630 --> 00:35:09,980 ექსკლუზიური ან, ისე, სახელი, სახის, ვარაუდობს, 741 00:35:09,980 --> 00:35:13,940 პასუხი მხოლოდ იქნება 1 თუ საშუალებებით არის ექსკლუზიური, 742 00:35:13,940 --> 00:35:15,560 მხოლოდ განსხვავებული. 743 00:35:15,560 --> 00:35:18,170 ასე რომ, აქ საშუალებებით არიან იგივე, ასე რომ გამომავალი 0. 744 00:35:18,170 --> 00:35:20,700 აქ საშუალებებით არიან იგივე, ასე რომ გამომავალი 0. 745 00:35:20,700 --> 00:35:25,640 აქ არის შედეგები სხვადასხვა, მათ ექსკლუზიური და ასე გამომავალი 1. 746 00:35:25,640 --> 00:35:28,190 ასე რომ, ეს ძალიან ჰგავს და, ეს ძალიან ჰგავს, 747 00:35:28,190 --> 00:35:32,760 ან პირიქით, ეს ძალიან ჰგავს OR, მაგრამ მხოლოდ ექსკლუზიური გზა. 748 00:35:32,760 --> 00:35:36,210 ეს ერთი აღარ არის 1, იმიტომ, რომ ჩვენ გვაქვს ორი 1-ის, 749 00:35:36,210 --> 00:35:38,621 და არა მხოლოდ, მხოლოდ ერთი მათგანი. 750 00:35:38,621 --> 00:35:39,120 ყველა უფლება. 751 00:35:39,120 --> 00:35:40,080 რაც შეეხება სხვები? 752 00:35:40,080 --> 00:35:44,220 ისე tilde, იმავდროულად, არის რეალურად ლამაზი და მარტივი, საბედნიეროდ. 753 00:35:44,220 --> 00:35:46,410 და ეს არის unary ოპერატორი, რაც იმას ნიშნავს, 754 00:35:46,410 --> 00:35:50,400 ის გამოიყენება მხოლოდ ერთი input, ერთი operand, ასე ვთქვათ. 755 00:35:50,400 --> 00:35:51,800 არ მარცხენა და მარჯვენა. 756 00:35:51,800 --> 00:35:56,050 სხვა სიტყვებით, თუ თქვენ მიიღოს tilde of 0 პასუხი იქნება, პირიქით. 757 00:35:56,050 --> 00:35:59,710 და თუ tilde of 1, პასუხი არ იქნება, პირიქით. 758 00:35:59,710 --> 00:36:02,570 ასე რომ, tilde ოპერატორი გზა უარყოფს ცოტა, 759 00:36:02,570 --> 00:36:06,000 ან flipping ცოტა 0 1 ან 1: 0. 760 00:36:06,000 --> 00:36:09,820 >> და რომ ტოვებს საბოლოოდ მხოლოდ ორი საბოლოო ოპერატორები, 761 00:36:09,820 --> 00:36:13,840 ე.წ. მარცხენა ცვლა, და ე.წ. უფლება ცვლის ოპერატორი. 762 00:36:13,840 --> 00:36:16,620 მოდით შევხედოთ, თუ როგორ იმ სამუშაოს. 763 00:36:16,620 --> 00:36:20,780 მარცხენა Shift ოპერატორი, წერილობითი ორი კუთხე ფრჩხილებში, როგორც, რომ, 764 00:36:20,780 --> 00:36:22,110 მოქმედებს შემდეგნაირად. 765 00:36:22,110 --> 00:36:27,390 თუ ჩემი შეყვანის, ან ჩემი operand, რომ მარცხნივ ცვლის ოპერატორი საკმაოდ უბრალოდ 1. 766 00:36:27,390 --> 00:36:33,750 შემდეგ მე და ვუთხრა კომპიუტერი მარცხენა ცვლა, რომ 1, ამბობენ, შვიდი ადგილებში, 767 00:36:33,750 --> 00:36:37,150 შედეგი ის არის, თითქოს მე მიიღოს, რომ 1 და გადატანა 768 00:36:37,150 --> 00:36:40,160 შვიდი ადგილებში მეტი მარცხენა და ჩვეულებრივ, 769 00:36:40,160 --> 00:36:42,270 ჩვენ ვაპირებთ, უნდა ვივარაუდოთ, რომ სივრცეში მარჯვნივ 770 00:36:42,270 --> 00:36:44,080 იქნება დადიოდა ერთად zeros. 771 00:36:44,080 --> 00:36:50,316 სხვა სიტყვებით, 1 მარცხენა ცვლა 7 აპირებს მაძლევს, რომ 1, მოჰყვა 1, 2, 3, 772 00:36:50,316 --> 00:36:54,060 4, 5, 6, 7 zeros. 773 00:36:54,060 --> 00:36:57,380 ისე, ის საშუალებას გაძლევთ მიიღოს მცირე რაოდენობის 1, 774 00:36:57,380 --> 00:37:00,740 და ნათლად, რათა ის უფრო ბევრად, ბევრად უფრო დიდი, ამ გზით, 775 00:37:00,740 --> 00:37:06,460 მაგრამ ჩვენ რეალურად აპირებს ვხედავ უფრო ჭკვიანი მიდგომების ეს 776 00:37:06,460 --> 00:37:08,080 ნაცვლად, ისევე, 777 00:37:08,080 --> 00:37:08,720 >> ყველა უფლება. 778 00:37:08,720 --> 00:37:10,060 ეს არის ის, კვირაში სამი. 779 00:37:10,060 --> 00:37:11,400 ჩვენ ვნახავთ თქვენ მომავალი დრო. 780 00:37:11,400 --> 00:37:12,770 ეს იყო CS50. 781 00:37:12,770 --> 00:37:17,270 782 00:37:17,270 --> 00:37:22,243 >> [მუსიკის დაკვრა] 783 00:37:22,243 --> 00:37:25,766 >> დინამიკები 1: ის იმყოფებოდა snack ბარი ჭამა ცხელი fudge sundae. 784 00:37:25,766 --> 00:37:28,090 მას ჰქონდა ის მთელი მისი სახე. 785 00:37:28,090 --> 00:37:30,506 ის ეცვა, რომ შოკოლადი, როგორც წვერი 786 00:37:30,506 --> 00:37:31,756 დინამიკები 2: რას აკეთებთ? 787 00:37:31,756 --> 00:37:32,422 დინამიკები 3: Hmmm? 788 00:37:32,422 --> 00:37:33,500 რა არის ეს? 789 00:37:33,500 --> 00:37:36,800 >> დინამიკები 2: იცით თუ უბრალოდ ორმაგი დიპლომატიური? 790 00:37:36,800 --> 00:37:38,585 თქვენ ორმაგი dipped ჩიპი. 791 00:37:38,585 --> 00:37:39,460 დინამიკები 3: მაპატიეთ. 792 00:37:39,460 --> 00:37:44,440 დინამიკები 2: თქვენ dipped ჩიპი, თქვენ აიღო bite, და თქვენ dipped ერთხელ. 793 00:37:44,440 --> 00:37:44,940 დინამიკები 3: 794 00:37:44,940 --> 00:37:48,440 დინამიკები 2: ასე რომ, როგორიცაა აყენებს მთელი პირით უფლება Dip. 795 00:37:48,440 --> 00:37:52,400 მომავალი დრო თქვენ მიიღოს ჩიპი, მხოლოდ დიპლომატიური ერთხელ, და დასრულდება იგი. 796 00:37:52,400 --> 00:37:53,890 >> დინამიკები 3: თქვენ იცით, რა, დენ? 797 00:37:53,890 --> 00:37:58,006 თქვენ ამოთხრა ისე, რომ გსურთ ამოთხრა. 798 00:37:58,006 --> 00:38:01,900 მე დიპლომატიური გზა, რომ მინდა ამოთხრა. 799 00:38:01,900 --> 00:38:03,194