1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> დავით Malan ყველა უფლება. 3 00:00:12,250 --> 00:00:13,860 სტუმარს უკან CS50. 4 00:00:13,860 --> 00:00:16,190 ეს არის დაწყების კვირაში 8. 5 00:00:16,190 --> 00:00:21,320 და გავიხსენოთ, რომ პრობლემა ნაკრები 5 დასრულდა ერთად ცოტა გამო. 6 00:00:21,320 --> 00:00:25,210 ასე რომ, თუ ვთქვათ თქვენ ამოღებული ყველა თქვენი სწავლების პრაქტიკის და CA-ის ფოტოებზე 7 00:00:25,210 --> 00:00:30,480 ამ card.raw ფაილი, თქვენ უფლება ახლა ყველა იმ ხალხს და 8 00:00:30,480 --> 00:00:34,510 ერთი იღბლიანი გამარჯვებული ფეხით სახლში ერთი ეს ყველაფერი, ნახტომი მოძრაობის 9 00:00:34,510 --> 00:00:37,450 მოწყობილობა, რომელიც შეგიძლიათ გამოიყენოთ საბოლოო პროექტები, მაგალითად. 10 00:00:37,450 --> 00:00:39,860 >> ეს კი, ყოველ წელს, იწვევს ცოტა creepiness. 11 00:00:39,860 --> 00:00:43,480 ასე რომ, ის, რაც მეგონა, მე მინდა გაკეთება არის წილი თქვენთან ერთად ზოგიერთი აღნიშნავს, რომ აქვს 12 00:00:43,480 --> 00:00:47,370 წავიდა უკან და მეოთხე ზე საშტატო ხვდება. 13 00:00:47,370 --> 00:00:51,110 მაგალითად, გასულ ღამეს, გაცემა unquote, ერთი პერსონალის 14 00:00:51,110 --> 00:00:55,000 წევრი, "მე მქონდა სტუდენტი დარტყმა ჩემი კარი მიიღოს ფოტო ჩემთან ერთად. 15 00:00:55,000 --> 00:00:59,020 Stalkers, მე გეტყვით. "მოედანზე საკმაოდ აღწერითი და შემდეგ გადავედით 16 00:00:59,020 --> 00:01:02,830 შესახებ, საათში ან ასე შემდეგ, "მე მქონდა სტუდენტი მელოდება შემდეგ სექციაში 17 00:01:02,830 --> 00:01:06,080 მას ჰქონდა ყველა ჩვენი სახელები და ფოტოები ზოგიერთ ფურცლებზე. "ყველა უფლება. 18 00:01:06,080 --> 00:01:09,230 ასე რომ, ორგანიზებული, მაგრამ არა ყველა რომ creepy ამჟამად. 19 00:01:09,230 --> 00:01:12,520 >> ამის შემდეგ, "მე ვიყავი ქალაქგარეთ ამ კვირის ბოლოს, და როცა დაბრუნდა, იყო ერთი 20 00:01:12,520 --> 00:01:12,630 ჩემი 21 00:01:12,630 --> 00:01:16,740 საძინებელი. "[სიცილი] 22 00:01:16,740 --> 00:01:20,410 დავით Malan: შემდეგი ციტატა პერსონალი წევრი, "სტუდენტი მოვიდა სახლი 23 00:01:20,410 --> 00:01:25,330 SOMERVILLE ღამის 4 საათზე დილით. "შემდეგი თანამშრომლები, "მე მივიღე ჩემი სასტუმროს სან 24 00:01:25,330 --> 00:01:30,016 ფრანცისკოსა და სტუდენტი ელოდა მე ფოიეში სამი DSLRs ". 25 00:01:30,016 --> 00:01:31,510 გაცნობის კამერა. 26 00:01:31,510 --> 00:01:34,980 "მე არ ვარ კი თანამშრომლები ამ სემესტრის მაგრამ სტუდენტი შეიჭრნენ ჩემს სახლში ამ 27 00:01:34,980 --> 00:01:40,480 დილით და ჩაწერა მთელი რამ Google-შუშა. "და მაშინ ბოლოს, 28 00:01:40,480 --> 00:01:43,650 "სულ მცირე 12 ადამიანი იმყოფებოდა ცალსახად ელოდება ჩემთვის, როდესაც მე მივიღე და ჩემი 29 00:01:43,650 --> 00:01:44,800 limo, და მერე 30 00:01:44,800 --> 00:01:46,970 გაიღვიძა. "ყველა უფლება. 31 00:01:46,970 --> 00:01:57,690 ასე რომ, მათ შორის ფოტოების, როგორც შეგიძლიათ გავიხსენოთ, რომლებიც ამ თანამემამულე აქ, ვინ ხარ 32 00:01:57,690 --> 00:02:01,850 ალბათ იცით, როგორც მილო ბანანის, რომელიც ცხოვრობს ერთად ლორენ Carvalho, ჩვენი უფროსი 33 00:02:01,850 --> 00:02:02,905 სწავლების თანამშრომელი. 34 00:02:02,905 --> 00:02:05,170 Milo, Milo, აქ მოვიდა ბიჭი. 35 00:02:05,170 --> 00:02:06,320 Milo. 36 00:02:06,320 --> 00:02:08,650 Milo. 37 00:02:08,650 --> 00:02:12,230 ნუ თქვენ, ის ეცვა Google შუშა, ისე ჩვენ გავხდით თქვენ ეს ყველაფერი შემდეგ. 38 00:02:12,230 --> 00:02:16,190 ასე რომ, ეს Milo თუ გსურთ მიიღოს ფოტოს მასთან შემდეგ. 39 00:02:16,190 --> 00:02:18,240 თუ გსურთ გამოიყურებოდეს out ზე აუდიტორიის არსებობს. 40 00:02:18,240 --> 00:02:19,430 OK. 41 00:02:19,430 --> 00:02:20,200 სწორედ კარგი კადრები. 42 00:02:20,200 --> 00:02:22,556 ისე, Milo Banana. 43 00:02:22,556 --> 00:02:23,941 ოჰ, არ გაგვაჩნია. 44 00:02:23,941 --> 00:02:29,020 >> [სიცილი] 45 00:02:29,020 --> 00:02:29,470 >> OK. 46 00:02:29,470 --> 00:02:34,550 ასე რომ, სიტყვა მერე რა დევს წინ, რადგან ჩვენ ვიწყებთ გარდამავალი 47 00:02:34,550 --> 00:02:38,410 ამ კვირაში კონკრეტულად, საწყისი C- ბრძანების ხაზი გარემოს PHP და 48 00:02:38,410 --> 00:02:42,720 JavaScript და SQL და HTML და CSS ში ინტერნეტის მეშვეობით გარემო, ვიქნებით 49 00:02:42,720 --> 00:02:44,490 აღჭურვას გაძლევთ ყველა მეტი ცოდნის 50 00:02:44,490 --> 00:02:46,010 პოტენციური საბოლოო პროექტები. 51 00:02:46,010 --> 00:02:49,240 მიმართ, რომ ბოლოს და ბოლოს, რა თქმა უნდა აქვს ჩატარების ტრადიციის დამკვიდრება სემინარები რომელიც 52 00:02:49,240 --> 00:02:50,950 არიან tangential თემა to რა თქმა უნდა. 53 00:02:50,950 --> 00:02:54,330 ძალიან დაკავშირებული პროგრამირების და ოთახი განვითარებისა და ა.შ., მაგრამ 54 00:02:54,330 --> 00:02:57,010 არ არის აუცილებელი შესწავლილი მიერ რა თქმა უნდა, საკუთარი სილაბუსში. 55 00:02:57,010 --> 00:03:00,250 >> ასე რომ, თუ თქვენ შეიძლება იყოს დაინტერესებული ერთი ან მეტი წლევანდელი სემინარები, 56 00:03:00,250 --> 00:03:02,530 დარეგისტრირდეთ cs50.net/seminar. 57 00:03:02,530 --> 00:03:06,170 არსებობს ძველი სემინარები ზე cs50.net/seminars. 58 00:03:06,170 --> 00:03:10,620 ხოლო სტუმარს დღემდე ამ წელს საოცარი ვებ პროგრამები ერთად Ruby on 59 00:03:10,620 --> 00:03:13,580 რელსები, რომელიც ალტერნატიული ენა PHP. 60 00:03:13,580 --> 00:03:14,900 კომპიუტერული ლინგვისტიკა. 61 00:03:14,900 --> 00:03:18,710 შესავალი iOS, რომელიც პლატფორმა, რომელიც გამოიყენება iPhone და 62 00:03:18,710 --> 00:03:19,850 iPad განვითარებას. 63 00:03:19,850 --> 00:03:22,890 JavaScript ვებ პროგრამები, ჩვენ დაფარავს , მაგრამ ამ სემინარის, თქვენ წავიდეთ 64 00:03:22,890 --> 00:03:24,070 უფრო დეტალურად. 65 00:03:24,070 --> 00:03:27,390 >> ნახტომი Motion, ასე რომ ჩვენ რეალურად გვაქვს ჩვენი მეგობრების მხრიდან ნახტომის Motion, 66 00:03:27,390 --> 00:03:29,160 კომპანია თავად, შემოგვიერთდნენ. 67 00:03:29,160 --> 00:03:31,800 ხვალ, ფაქტობრივად, უზრუნველყოს პრაქტიკული სემინარი, თუ 68 00:03:31,800 --> 00:03:33,320 საინტერესო იყოს თქვენთვის. 69 00:03:33,320 --> 00:03:38,770 Meteor.js, ალტერნატიული ტექნიკა გამოყენებით JavaScript არა ბრაუზერის, 70 00:03:38,770 --> 00:03:39,970 მაგრამ სერვერზე. 71 00:03:39,970 --> 00:03:42,110 Node.js, რაც ძალიან ამ ვენის ასევე. 72 00:03:42,110 --> 00:03:43,650 Sleek Android დიზაინი. 73 00:03:43,650 --> 00:03:46,990 Android მყოფი ძალიან პოპულარულია ალტერნატიული to iOS და Windows ტელეფონი 74 00:03:46,990 --> 00:03:48,790 და სხვა მობილური პლატფორმების. 75 00:03:48,790 --> 00:03:51,180 და ვებ უშიშროების შემოვიდა თავდაცვის. 76 00:03:51,180 --> 00:03:54,590 >> ასე რომ, რეალურად, თუ გსურთ ჩაერთონ ამ ნება მიბოძეთ, 77 00:03:54,590 --> 00:03:55,840 მიიღოს ნოტა ამ. 78 00:03:55,840 --> 00:03:57,790 ჩვენ ძალიან მოხარულები ვართ, რომ ვთქვათ, რომ ჩვენს მეგობრებს ნახტომის 79 00:03:57,790 --> 00:03:59,140 Motion, რომელიც გაშვების - 80 00:03:59,140 --> 00:04:01,300 ამ მოწყობილობის რეალურად მხოლოდ მოვიდა რამდენიმე თვის წინ - 81 00:04:01,300 --> 00:04:05,960 აქვს graciously საჩუქრად 30 ასეთი მოწყობილობები კლასს, რადგან ბევრი სტუდენტი, თუ 82 00:04:05,960 --> 00:04:08,670 გსურთ სესხის ტექნიკის მიმართ სემესტრის ბოლოს და გამოყენება 83 00:04:08,670 --> 00:04:10,390 ფაქტობრივი საბოლოო პროექტს. 84 00:04:10,390 --> 00:04:11,890 ისინი მხარს უჭერენ რიგი ენებზე. 85 00:04:11,890 --> 00:04:16,040 არც ერთ მათგანს C, არც ერთი მათგანი PHP, ისე გააცნობიეროს, ერთი ან მეტი ასეთი სემინარები 86 00:04:16,040 --> 00:04:16,899 შეიძლება დაამტკიცოს ინტერესი. 87 00:04:16,899 --> 00:04:19,730 და ყველა მათგანი იქნება გადაღებული შემთხვევაში, თუ თქვენ ვერ ახერხებენ 88 00:04:19,730 --> 00:04:21,380 დასწრების პირადად. 89 00:04:21,380 --> 00:04:25,000 გრაფიკის გამოცხადდება მეშვეობით ელ, როგორც ჩვენ გაამყარებს ოთახები. 90 00:04:25,000 --> 00:04:28,460 >> და ბოლოს, თუ თქვენ გადასვლა projects.cs.50.net, ეს ნახვა 91 00:04:28,460 --> 00:04:31,450 შევინარჩუნებთ ყოველწლიურად, რომ ჩვენ ვიწვევთ ეგ ეხლა თანამეგობრობას, ფაკულტეტი, 92 00:04:31,450 --> 00:04:36,420 დეპარტამენტები, პერსონალი, და ორივე in გარეთ CS50 to 93 00:04:36,420 --> 00:04:37,730 შესთავაზოს პროექტის იდეები. 94 00:04:37,730 --> 00:04:39,050 სიტუაცია საინტერესო სტუდენტური ჯგუფების. 95 00:04:39,050 --> 00:04:40,600 სიტუაცია საინტერესო განყოფილებებს. 96 00:04:40,600 --> 00:04:43,990 ასე რომ აქციოს არსებობს თუ თქვენ იბრძვიან ერთად გაურკვევლობა, თუ რა თქვენ 97 00:04:43,990 --> 00:04:46,700 თავს მინდა დაძლევის. 98 00:04:46,700 --> 00:04:51,760 >> ასე რომ, ბოლო დროს ჩვენ გააცნო სავარაუდოდ უფრო რთული მონაცემთა სტრუქტურის, ვიდრე ჩვენ მინდა 99 00:04:51,760 --> 00:04:53,300 ჩანს კვირის წარსულში. 100 00:04:53,300 --> 00:04:56,550 გვსურს იყენებს მასივების საკმაოდ სიხარულით როგორც სასარგებლო, თუ 101 00:04:56,550 --> 00:04:58,160 მარტივი მონაცემთა სტრუქტურა. 102 00:04:58,160 --> 00:05:00,570 ამის შემდეგ ჩვენ გააცნო ამ, რომელიც რა თქმა უნდა, დაკავშირებულია სიები. 103 00:05:00,570 --> 00:05:05,470 და რა იყო ერთი მოტივაცია for დანერგვის ამ მონაცემთა სტრუქტურაში? 104 00:05:05,470 --> 00:05:06,930 ჰო? 105 00:05:06,930 --> 00:05:07,250 რა არის ეს? 106 00:05:07,250 --> 00:05:08,080 >> აუდიტორია: დინამიური ზომა. 107 00:05:08,080 --> 00:05:09,040 >> დავით Malan: დინამიური ზომა. 108 00:05:09,040 --> 00:05:11,890 ასე რომ, ხოლო მასივი, თქვენ უნდა ვიცი მისი ზომა წინასწარ, როდესაც 109 00:05:11,890 --> 00:05:12,740 თქვენ გამოყოს იგი. 110 00:05:12,740 --> 00:05:14,380 In უკავშირდება სია, თქვენ არ უნდა ვიცოდეთ, რომ. 111 00:05:14,380 --> 00:05:17,610 თქვენ შეგიძლიათ malloc, ან უფრო ზოგადად, გამოყოფს დამატებით 112 00:05:17,610 --> 00:05:20,720 კვანძის, ასე ვთქვათ, ნებისმიერ დროს გვინდა ჩადეთ უფრო მონაცემები. 113 00:05:20,720 --> 00:05:22,670 და კვანძის არ აქვს წინასწარ განსაზღვრული მნიშვნელობა. 114 00:05:22,670 --> 00:05:25,580 უბრალოდ გვარეობითი ცნება, სადაც აღწერილია ერთგვარი კონტეინერი, რომ ჩვენ 115 00:05:25,580 --> 00:05:29,610 გამოყენებით ჩვენს მონაცემთა სტრუქტურის შესანახად ზოგიერთ პუნქტში ინტერესი, რომელიც ამ 116 00:05:29,610 --> 00:05:31,750 შემთხვევაში არ უნდა იყოს რიცხვებით. 117 00:05:31,750 --> 00:05:33,160 >> მაგრამ ყოველთვის tradeoff. 118 00:05:33,160 --> 00:05:38,070 ასე რომ, ჩვენ ვიღებთ დინამიური ზომის მონაცემები სტრუქტურა, მაგრამ რა ფასად არ ვიხდით? 119 00:05:38,070 --> 00:05:40,040 რა არის downside დაკავშირებული სიები? 120 00:05:40,040 --> 00:05:41,006 ჰო? 121 00:05:41,006 --> 00:05:41,980 >> აუდიტორია: მეტი მეხსიერება. 122 00:05:41,980 --> 00:05:44,240 >> დავით Malan: ეს მოითხოვს უფრო მეხსიერება, რამდენად ზუსტად? 123 00:05:44,240 --> 00:05:46,440 >> აუდიტორია: [inaudible]. 124 00:05:46,440 --> 00:05:47,050 >> დავით Malan: ზუსტად. 125 00:05:47,050 --> 00:05:50,460 ასე რომ, ახლა ჩვენ მითითებას დაკავების დამატებითი მეხსიერების, რომ ჩვენ ადრე 126 00:05:50,460 --> 00:05:53,040 არ სჭირდება, რადგან უპირატესობა საქართველოს მასივი, რა თქმა უნდა, არის ის, რომ 127 00:05:53,040 --> 00:05:54,860 ყველაფერი მომიჯნავე, უკან უკან რომ დაბრუნდა, რომელიც 128 00:05:54,860 --> 00:05:56,380 გაძლევთ წვდომის. 129 00:05:56,380 --> 00:06:00,710 იმის გამო, რომ უბრალოდ გამოყენებით კვადრატული ფრჩხილი notation ან უფრო ტექნიკურად მაჩვენებელი 130 00:06:00,710 --> 00:06:03,580 არითმეტიკული, ძალიან მარტივია გარდა ამისა, შეგიძლიათ წვდომის ნებისმიერი 131 00:06:03,580 --> 00:06:05,700 ელემენტები მუდმივ დრო. 132 00:06:05,700 --> 00:06:08,975 და სინამდვილეში, ეს ერთგვარი მან მიანიშნა ზე სხვა ფასი, რომ ჩვენ გადახდის 133 00:06:08,975 --> 00:06:09,760 უკავშირდება სიაში. 134 00:06:09,760 --> 00:06:13,890 >> რა მოხდება, გაშვებული დრო რაღაც ძებნა, თუ მინდა 135 00:06:13,890 --> 00:06:17,270 რაღაც ღირებულება და შიგნით საქართველოს უკავშირდება სიაში? 136 00:06:17,270 --> 00:06:20,290 რას ჩემი ქრონომეტრაჟი გახდეს? 137 00:06:20,290 --> 00:06:21,560 დიდი ო ო. 138 00:06:21,560 --> 00:06:24,060 თუ ეს გადანაწილებული უნდა? 139 00:06:24,060 --> 00:06:25,440 რა მოხდება, თუ მონაცემთა სტრუქტურის გადანაწილებული? 140 00:06:25,440 --> 00:06:28,640 გავაკეთო უკეთესია, ვიდრე დიდი O of ო ძებნას? 141 00:06:28,640 --> 00:06:31,700 არა, იმიტომ, რომ უარეს შემთხვევაში ეს შესაძლოა ძალიან კარგად იყოს დახარისხებული, მაგრამ ნომერი 142 00:06:31,700 --> 00:06:32,950 ვეძებთ შეიძლება იყოს დიდი. 143 00:06:32,950 --> 00:06:35,370 ეს შეიძლება იყოს რიცხვი 100, რომელიც შეიძლება მოხდეს, რომ იყოს ყველა 144 00:06:35,370 --> 00:06:36,410 გზა ბოლოს. 145 00:06:36,410 --> 00:06:39,950 და რადგან თქვენ მხოლოდ წვდომის დაკავშირებული სიაში ამ შესრულების 146 00:06:39,950 --> 00:06:42,690 გზა მისი პირველი კვანძის, თქვენ ჯერ კიდევ სახის out of luck. 147 00:06:42,690 --> 00:06:47,450 თქვენ უნდა traverse მთელი რამ პირველი გაგრძელდება, რათა 148 00:06:47,450 --> 00:06:49,150 რომ დიდი მნიშვნელობა, როგორიცაა 100. 149 00:06:49,150 --> 00:06:51,350 ან, რათა დადგინდეს, თუ ეს არც კი არსებობს. 150 00:06:51,350 --> 00:06:55,960 >> ასე რომ, ჩვენ არ შეგვიძლია გავაკეთოთ ალგორითმი მონაცემები სტრუქტურა, რომელიც ასე გამოიყურება? 151 00:06:55,960 --> 00:06:59,460 ჩვენ არ შეგვიძლია გავაკეთოთ ორობითი ძებნა, რადგან ორობითი ძებნა საჭირო, რომ ჩვენ გვქონდა 152 00:06:59,460 --> 00:07:00,740 წვდომის. 153 00:07:00,740 --> 00:07:04,500 ჩვენ შეიძლება მხოლოდ ნახტომი from ადგილმდებარეობა საიდან გარეშე დაიცვას 154 00:07:04,500 --> 00:07:07,080 ეს პური crumbs სახით ყველა ამ მითითებას. 155 00:07:07,080 --> 00:07:08,300 >> ახლა, რა ჩვენ შევასრულებთ? 156 00:07:08,300 --> 00:07:12,830 ისე, თუ ჩვენ წასვლა ეკრანზე აქ, თუ ჩვენ შეგვიძლია სწრაფად reimplement ამ მონაცემთა 157 00:07:12,830 --> 00:07:13,440 სტრუქტურა - 158 00:07:13,440 --> 00:07:15,670 ჩემი ხელწერა არ არის ყველა, რომ დიდი, მაგრამ ჩვენ შევეცდებით. 159 00:07:15,670 --> 00:07:22,030 ასე რომ typedef struct, რა უნდოდა I მინდა მოვუწოდო ამ რამ აქ? 160 00:07:22,030 --> 00:07:22,960 Node. 161 00:07:22,960 --> 00:07:24,580 ასე რომ, შეძლებთ us დაიწყო. 162 00:07:24,580 --> 00:07:27,860 ახლა კი, თუ რა უნდა იყოს შიგნით მონაცემთა სტრუქტურა, რომელიც ცალკე 163 00:07:27,860 --> 00:07:28,430 უკავშირდება სიაში? 164 00:07:28,430 --> 00:07:29,950 რამდენი სფეროებში? 165 00:07:29,950 --> 00:07:30,450 >> ასე რომ, ორი. 166 00:07:30,450 --> 00:07:31,570 ერთი საკმაოდ მარტივია. 167 00:07:31,570 --> 00:07:33,050 ასე int n. 168 00:07:33,050 --> 00:07:35,930 და ჩვენ შეიძლება მოუწოდოს ო არაფერი ჩვენ გვინდა, მაგრამ ეს უნდა იყოს int, თუ ჩვენ 169 00:07:35,930 --> 00:07:37,660 ახორციელებს უკავშირდება სიაში ints. 170 00:07:37,660 --> 00:07:41,920 ახლა კი რა მეორე სფეროში უნდა იყოს? 171 00:07:41,920 --> 00:07:43,460 Struct კვანძის *. 172 00:07:43,460 --> 00:07:50,570 ასე რომ, თუ struct კვანძის *, და მერე შეუძლიათ ეს ასევე რაც არ მინდა, 173 00:07:50,570 --> 00:07:53,510 მაგრამ უნდა იყოს ნათელი მე მოვუწოდებ მას შემდეგ, როგორც ჩვენ აკეთებდა. 174 00:07:53,510 --> 00:07:55,270 და მაშინ მე ახლოს ჩემს curly აფრთხილებს. 175 00:07:55,270 --> 00:08:00,700 >> ახლა კი, როგორც ბოლო დროს, მე კვანძის ქვემოთ აქ. 176 00:08:00,700 --> 00:08:03,830 მაგრამ თუ მე გამოცხადების ეს ყველაფერი კვანძის, რატომ მე გადაიტვირთოთ ასეთი 177 00:08:03,830 --> 00:08:07,320 verbose აქ გამოცხადების struct კვანძის * მომდევნო, როგორც ეწინააღმდეგებოდა 178 00:08:07,320 --> 00:08:09,210 უბრალოდ კვანძის * შემდეგი? 179 00:08:09,210 --> 00:08:09,904 ჰო? 180 00:08:09,904 --> 00:08:12,810 >> აუდიტორია: [inaudible]. 181 00:08:12,810 --> 00:08:14,050 >> დავით Malan: ზუსტად. 182 00:08:14,050 --> 00:08:14,530 ზუსტად. 183 00:08:14,530 --> 00:08:18,320 იმის გამო, რომ C მართლაც მოგაწვდით ფაქტიურად და მხოლოდ ხედავს განსაზღვრება კვანძის 184 00:08:18,320 --> 00:08:21,230 გზა ქვემოთ აქ, თქვენ ვერ უწოდებს აქ. 185 00:08:21,230 --> 00:08:24,760 ამიტომ ამ სახის უპირატესი გამოსყიდვის დეკლარაციის აქ, რომელიც admittedly 186 00:08:24,760 --> 00:08:25,390 მეტი verbose. 187 00:08:25,390 --> 00:08:27,810 Struct კვანძის, რაც იმას ნიშნავს, ჩვენ ახლა ვებგვერდზე 188 00:08:27,810 --> 00:08:29,760 შიგნით მონაცემთა სტრუქტურას. 189 00:08:29,760 --> 00:08:33,370 >> და როგორც განზე, რადგან ეს გახდეს უფრო სუბიექტური ახლა, 190 00:08:33,370 --> 00:08:36,230 ვარსკვლავი შეიძლება ტექნიკურად აქ, მას შეუძლია წავიდეს აქ, მას შეუძლია 191 00:08:36,230 --> 00:08:37,179 კიდევ წავიდეთ ცენტრიდან. 192 00:08:37,179 --> 00:08:39,890 ჩვენ მიღებული, ამ სტილის სახელმძღვანელო რა თქმა უნდა, კონვენციის აყენებს 193 00:08:39,890 --> 00:08:42,299 ვარსკვლავი უფლება შემდეგ მონაცემები ტიპის, რაც ამ შემთხვევაში, 194 00:08:42,299 --> 00:08:43,460 იქნება struct კვანძის. 195 00:08:43,460 --> 00:08:46,620 მაგრამ განხორციელებისას ბევრი სახელმძღვანელოების და ონლაინ ცნობას, შეიძლება მართლაც 196 00:08:46,620 --> 00:08:48,450 მისი დანახვა მეორე მხარეს. 197 00:08:48,450 --> 00:08:52,200 მაგრამ მიხვდებიან, რომ ორივე რეალურად მუშაობა და თქვენ უნდა უბრალოდ იყოს 198 00:08:52,200 --> 00:08:52,970 თანმიმდევრული. 199 00:08:52,970 --> 00:08:53,580 >> ყველა უფლება. 200 00:08:53,580 --> 00:08:55,630 ასე რომ, იყო ჩვენი დეკლარაცია საქართველოს struct კვანძის. 201 00:08:55,630 --> 00:08:59,430 მაგრამ შემდეგ ჩვენ დავიწყეთ აკეთებს უფრო დახვეწილი რამ. 202 00:08:59,430 --> 00:09:03,410 მაგალითად, ჩვენ გადავწყვიტეთ, რომ გააცნობს რაღაც hash მაგიდასთან. 203 00:09:03,410 --> 00:09:08,160 ასე რომ, აქ არის hash მაგიდასთან ზომა n, ინდექსირებული 0 ზედა დარჩა ო 204 00:09:08,160 --> 00:09:09,690 მინუს 1 წლის ბოლოში დარჩა. 205 00:09:09,690 --> 00:09:11,640 ეს შეიძლება იყოს hash მაგიდა არაფერი. 206 00:09:11,640 --> 00:09:15,340 მაგრამ რა სახის რამ საერთოდ ვსაუბრობთ გამოყენების შესახებ hash მაგიდა? 207 00:09:15,340 --> 00:09:18,370 შენახვა რა? 208 00:09:18,370 --> 00:09:18,800 >> სახელები. 209 00:09:18,800 --> 00:09:20,870 ჩვენ შეიძლება არ სახელები, როგორიცაა ჩვენ გავაკეთეთ ბოლო დროს. 210 00:09:20,870 --> 00:09:22,200 მართლაც, შეგიძლიათ შესანახად არაფერი. 211 00:09:22,200 --> 00:09:24,640 და ჩვენ დავინახავთ, ეს კიდევ ერთხელ in PHP და JavaScript. 212 00:09:24,640 --> 00:09:28,550 Hash მაგიდა ლამაზი სახის შვეიცარიის არმიის დანა, რომელიც საშუალებას გაძლევთ შენახვა 213 00:09:28,550 --> 00:09:33,690 საკმაოდ ბევრი რაც გაგიხარდებათ შიგნით მას ასოცირების გასაღებები ფასეულობებით. 214 00:09:33,690 --> 00:09:34,770 Keys ფასეულობებით. 215 00:09:34,770 --> 00:09:37,800 >> ახლა ამ მარტივი შემთხვევაში, ჩვენი გასაღებები მხოლოდ ციფრები. 216 00:09:37,800 --> 00:09:40,380 ჩვენ ახორციელებს hash მაგიდა როგორც მასივი. 217 00:09:40,380 --> 00:09:43,500 ასე რომ გასაღებები 0, 1, 2, და ა.შ.. 218 00:09:43,500 --> 00:09:47,200 ასე რომ, ჩვენ, როგორც ადამიანი, გადაწყვიტა ბოლო კვირას, რომ იცით, რა, თუ ჩვენ 219 00:09:47,200 --> 00:09:50,410 აპირებს მაღაზიის სახელები, მოდით მხოლოდ თვითნებურად, მაგრამ საკმაოდ გონივრულად, 220 00:09:50,410 --> 00:09:54,680 ვარაუდობენ, რომ ელის, სახელი და გვარი, უბრალოდ იყოს ინდექსირებული შევიდა 0. 221 00:09:54,680 --> 00:09:58,030 და ბობ, B სახელწოდება იქნება ინდექსირებული შევიდა 1, და ა.შ.. 222 00:09:58,030 --> 00:10:02,490 ასე რომ, ჩვენ გვქონდა რუკების შორის საშუალებებით, რომლებიც strings და hash 223 00:10:02,490 --> 00:10:04,560 ადგილებში, რომლებიც ნომრები. 224 00:10:04,560 --> 00:10:07,740 >> ასე რომ, პროცესი საყოველთაოდ ცნობილია, როგორც hash ფუნქცია, შეგიძლიათ ნამდვილად 225 00:10:07,740 --> 00:10:09,130 განახორციელოს ეს კოდი. 226 00:10:09,130 --> 00:10:12,080 თუ მინდოდა განხორციელება hash ფუნქცია რომ არ ზუსტად ის, რაც ჩვენ 227 00:10:12,080 --> 00:10:17,070 უბრალოდ აღწერილი ბოლო დროს, ალბათ ვაცხადებ ფუნქცია, რომელიც გადადის, როგორც 228 00:10:17,070 --> 00:10:18,330 შეყვანის მაგალითად - 229 00:10:18,330 --> 00:10:22,190 და მოდით ეს ამ ეკრანზე მეტი აქ. 230 00:10:22,190 --> 00:10:26,180 თუ მინდოდა განხორციელება hash ფუნქცია, შეიძლება ითქვას, 231 00:10:26,180 --> 00:10:27,410 მსგავსი რამ. 232 00:10:27,410 --> 00:10:29,030 >> ეს დაბრუნებას აპირებს int. 233 00:10:29,030 --> 00:10:33,600 ეს იქნება მოუწოდა hash და ეს აპირებს მიიღოს როგორც არგუმენტი 234 00:10:33,600 --> 00:10:38,920 ტექსტი, ან ჩვენ შეიძლება იყოს უფრო სწორად, ახლა, და აცხადებენ, char *, ჩვენ მოვუწოდებთ მას s. 235 00:10:38,920 --> 00:10:43,840 და მაშინ ყველაფერი ეს ფუნქცია უნდა გააკეთოს, საბოლოო ჯამში, არის დაბრუნდეს int. 236 00:10:43,840 --> 00:10:45,990 ახლა, როგორ აკეთებს, რომ შეიძლება არ უნდა იყოს ისე ნათელი. 237 00:10:45,990 --> 00:10:49,510 მე ვაპირებ განხორციელების გარეშე ფორმა შეცდომა შემოწმების უფლება. 238 00:10:49,510 --> 00:10:55,740 მე მხოლოდ აპირებს ბრმად ამბობენ, დაბრუნება რაც at s bracket 0, მინუსი, 239 00:10:55,740 --> 00:10:58,850 ვთქვათ, კაპიტალი მძიმით. 240 00:10:58,850 --> 00:10:59,960 >> სრულიად გატეხილი. 241 00:10:59,960 --> 00:11:02,620 ეს არ არის სრულყოფილი, რადგან ერთი, რა, თუ არის null? 242 00:11:02,620 --> 00:11:04,000 ცუდი რამ მოხდება. 243 00:11:04,000 --> 00:11:07,940 ორი, რა, თუ პირველი წერილი ამ სახელი არა დედაქალაქის წერილი? 244 00:11:07,940 --> 00:11:09,860 ამით არ აპირებს გახდეს გარეთ კარგად ან. 245 00:11:09,860 --> 00:11:11,970 ეს შეიძლება ამას წერილი თუ არა წერილი ყველა. 246 00:11:11,970 --> 00:11:15,520 ასე რომ, მთლიანად საჭიროებს გაუმჯობესებას აქ, მაგრამ ეს არის ძირითადი იდეა. 247 00:11:15,520 --> 00:11:19,010 >> რაც ჩვენ აღწერილი გასულ კვირას სიტყვიერი როგორც უბრალოდ პროცესი რუკების Alice to 248 00:11:19,010 --> 00:11:23,360 0 და ბობ 1 შეიძლება გამოიხატოს რა თქმა უნდა, უფრო formulaically როგორც C 249 00:11:23,360 --> 00:11:24,320 ფუნქციონირებას აქ. 250 00:11:24,320 --> 00:11:28,630 მოუწოდა კვლავ hash, იღებს სიმებიანი როგორც შეყვანა, შემდეგ კი რატომღაც არ რაღაც 251 00:11:28,630 --> 00:11:31,020 რომ შეტანის წარმოების გამომავალი. 252 00:11:31,020 --> 00:11:34,130 არ არის განსხვავებით ჩვენი შავი ყუთი აღწერა რომ ჩვენ ხანგრძლივი გაკეთდეს. 253 00:11:34,130 --> 00:11:36,550 არ ვიცი, როგორ შეიძლება იყოს სამუშაო ქვეშ hood. 254 00:11:36,550 --> 00:11:40,120 >> პრობლემის კომპლექტი 6, ერთ გამოწვევები თქვენთვის უნდა გადაწყვიტოს რა 255 00:11:40,120 --> 00:11:41,920 თქვენი hash ფუნქცია იქნება? 256 00:11:41,920 --> 00:11:45,760 რა იქნება შიგნით, რომ შავი ყუთი, და სავარაუდოდ, ეს იქნება 257 00:11:45,760 --> 00:11:50,380 უფრო საინტერესოა, ვიდრე ეს, და ნამდვილად უფრო მგრძნობიარეა, რომ შეცდომა 258 00:11:50,380 --> 00:11:53,180 შემოწმების, ვიდრე ამ კონკრეტული განხორციელებას. 259 00:11:53,180 --> 00:11:54,580 >> მაგრამ პრობლემა წარმოიქმნება, არა? 260 00:11:54,580 --> 00:11:57,760 თუ ჩვენ გვაქვს მონაცემთა სტრუქტურის მსგავსი ერთი, რა არის ერთ ერთი პრობლემები 261 00:11:57,760 --> 00:12:01,600 შეგიძლიათ აწარმოებს შევიდა დროთა განმავლობაში, როგორც თქვენ ჩადეთ უფრო და უფრო სახელები შევიდა 262 00:12:01,600 --> 00:12:02,880 hash მაგიდაზე? 263 00:12:02,880 --> 00:12:04,630 თქვენ შეჯახება, არა? 264 00:12:04,630 --> 00:12:07,560 რა მოხდება, თუ თქვენ გაქვთ Alice და აარონი, ორი ადამიანი, რომელთა სახელები მოხდა 265 00:12:07,560 --> 00:12:08,190 უნდა დაიწყოს? 266 00:12:08,190 --> 00:12:11,660 ეს სთხოვს კითხვა, თუ სად დააყენა მეორე ასეთი სახელი? 267 00:12:11,660 --> 00:12:15,050 >> ისე, თქვენ შეიძლება გულუბრყვილოდ მხოლოდ დააყენა ეს სადაც ბობ ეკუთვნის, მაგრამ შემდეგ ბობ არის 268 00:12:15,050 --> 00:12:17,300 სახის ბრალია თუ ცდილობენ ჩადეთ მისი სახელი მომავალი და 269 00:12:17,300 --> 00:12:18,240 არ არსებობს ოთახი მისთვის. 270 00:12:18,240 --> 00:12:21,400 ასე რომ, შესაძლოა, დააყენა ბობ, სადაც ჩარლი არის, და თქვენ წარმოიდგინეთ ეს ძალიან სწრაფად 271 00:12:21,400 --> 00:12:23,020 devolving შევიდა ცოტა სასადილო. 272 00:12:23,020 --> 00:12:25,600 რაღაც სწორხაზოვან, საბოლოოდ, სადაც თქვენ უბრალოდ უნდა ვეძებოთ მთელი რამ 273 00:12:25,600 --> 00:12:28,190 ეძებს Alice ან ბობ ან აარონის ან ჩარლი. 274 00:12:28,190 --> 00:12:33,230 >> ასე რომ, ნაცვლად შევთავაზეთ, ნაცვლად მხოლოდ ხაზოვანი საცდელი ღია ფართები 275 00:12:33,230 --> 00:12:36,450 და plopping სახელები არსებობს, ჩვენ შემოთავაზებული fancier მიდგომა. 276 00:12:36,450 --> 00:12:41,740 Hash მაგიდა განხორციელდა ჯერ კიდევ რიგი მაჩვენებლების, მაგრამ მონაცემთა ტიპის 277 00:12:41,740 --> 00:12:44,500 იმ მაჩვენებლების ახლა იყო მითითებას. 278 00:12:44,500 --> 00:12:47,360 მითითებას, თუ რა? 279 00:12:47,360 --> 00:12:48,730 მითითებას უკავშირდება სიები. 280 00:12:48,730 --> 00:12:53,330 >> იმის გამო, რომ შეგახსენებთ, რომ უკავშირდება სია რეალურად მხოლოდ კურსორის კვანძის და 281 00:12:53,330 --> 00:12:57,110 კვანძის აქვს მომავალი სფეროში, და რომ კვანძის აქვს შემდეგი მოედანზე და სხვ. 282 00:12:57,110 --> 00:13:00,690 ასე რომ, შეგიძლიათ ვფიქრობ, ამ მასივი წლის მარცხენა მხარეს hash მაგიდაზე 283 00:13:00,690 --> 00:13:01,820 რასაც უკავშირდება სიაში. 284 00:13:01,820 --> 00:13:07,000 უპირატესობა, რომელიც თუ თქვენ გაქვთ შეჯახების შორის Alice და აარონი, 285 00:13:07,000 --> 00:13:09,300 რას არ უკავშირდება მეორე ასეთი ადამიანი? 286 00:13:09,300 --> 00:13:14,150 თქვენ უბრალოდ ვანიჭებთ მას, რათა ბოლოს და ბოლოს, ან თუნდაც დასაწყისში 287 00:13:14,150 --> 00:13:15,490 იმ კავშირშია სიაში. 288 00:13:15,490 --> 00:13:17,340 >> და ფაქტობრივად, მოდით უბრალოდ noodle მეშვეობით რომ მხოლოდ მეორე. 289 00:13:17,340 --> 00:13:18,640 სად გახდის საუკეთესო გაგებით? 290 00:13:18,640 --> 00:13:22,060 თუ მე ჩადეთ Alice და იგი მთავრდება ზე პირველი მდებარეობა, შემდეგ ვცდილობ 291 00:13:22,060 --> 00:13:25,310 ჩადეთ აარონის სახელი და იქ ცხადია, შეჯახება, უნდა დააყენოს 292 00:13:25,310 --> 00:13:27,400 მას დასაწყისში საქართველოს უკავშირდება სიაში? 293 00:13:27,400 --> 00:13:30,944 სწორედ ამ დროს, პირველი მდებარეობა, ან ბოლოს? 294 00:13:30,944 --> 00:13:31,440 >> აუდიტორია: [inaudible]. 295 00:13:31,440 --> 00:13:31,990 >> დავით Malan: OK. 296 00:13:31,990 --> 00:13:32,490 გავიგე დასაწყისია. 297 00:13:32,490 --> 00:13:33,903 რატომ დასაწყისში? 298 00:13:33,903 --> 00:13:34,750 >> აუდიტორია: [inaudible]. 299 00:13:34,750 --> 00:13:34,940 >> დავით Malan: OK. 300 00:13:34,940 --> 00:13:36,520 ეს ანბანურ, ისე, რომ ლამაზი. 301 00:13:36,520 --> 00:13:37,330 ეს არის ის, კარგი ქონება. 302 00:13:37,330 --> 00:13:39,335 ეს გადაარჩენს მე გარკვეული დრო პოტენციურად. 303 00:13:39,335 --> 00:13:43,290 ეს არ მინდა ამის გაკეთება ბინარული ძებნის, მაგრამ მე შესაძლოა, სულ ცოტა შეძლებს დაარღვიოს 304 00:13:43,290 --> 00:13:47,340 საქართველოს მარყუჟის თუ ვხვდები, ისე, მე გზა წარსულში იყო აარონის იქნება ამ 305 00:13:47,340 --> 00:13:48,310 დახარისხება დაკავშირებული სიაში. 306 00:13:48,310 --> 00:13:50,360 მე არ დაგვრჩა დროს ეძებს ყველა გზა ბოლომდე. 307 00:13:50,360 --> 00:13:51,530 ასე რომ, გონივრული. 308 00:13:51,530 --> 00:13:54,710 რატომ სხვაგან შესაძლოა გსურთ ჩადეთ colliding სახელი ზე 309 00:13:54,710 --> 00:13:56,660 დასაწყისში სიაში? 310 00:13:56,660 --> 00:13:57,397 რა არის ეს? 311 00:13:57,397 --> 00:13:58,680 >> აუდიტორია: [inaudible]. 312 00:13:58,680 --> 00:14:00,820 >> დავით Malan: ეს შეიძლება გაგრძელდეს დიდი ხანი მისაღებად სიის ბოლოში. 313 00:14:00,820 --> 00:14:02,490 და სინამდვილეში, აღარ და აღარ. 314 00:14:02,490 --> 00:14:04,920 მეტ დასახელებას ჩადეთ, რომ იწყება, აღარ, რომ 315 00:14:04,920 --> 00:14:06,280 ჯაჭვის აპირებს მიიღოს. 316 00:14:06,280 --> 00:14:07,890 აღარ, რომ უკავშირდება სიაში აპირებდა. 317 00:14:07,890 --> 00:14:09,420 ასე რომ თქვენ რეალურად მხოლოდ გაყვანაა თქვენი დრო. 318 00:14:09,420 --> 00:14:14,070 იქნებ თქვენ უკეთესად შენარჩუნების მუდმივი ჩასმის დროს, დიდი O 1, 319 00:14:14,070 --> 00:14:18,470 by ყოველთვის აყენებს colliding სახელი ზე დასაწყისში უკავშირდება სია, 320 00:14:18,470 --> 00:14:21,230 და არა შემაშფოთებელია, ისევე შესახებ დახარისხება. 321 00:14:21,230 --> 00:14:22,600 >> რა არის საუკეთესო პასუხი? 322 00:14:22,600 --> 00:14:23,320 ეს გაურკვეველია. 323 00:14:23,320 --> 00:14:26,140 ეს ერთგვარი დამოკიდებული, თუ რა განაწილების, რა ნიმუში 324 00:14:26,140 --> 00:14:27,850 საქართველოს გვარები თქვენ ჩასმის. 325 00:14:27,850 --> 00:14:29,430 ეს არ არის აუცილებელი, ცხადია პასუხი. 326 00:14:29,430 --> 00:14:33,100 მაგრამ აქ, კიდევ ერთხელ, არის დიზაინი შესაძლებლობა. 327 00:14:33,100 --> 00:14:37,220 >> ასე რომ, ჩვენ მაშინ უყურებდნენ ამ რამ, რაც მართლაც დიდი შანსი 328 00:14:37,220 --> 00:14:38,180 ამისთვის P-ნაკრები 6. 329 00:14:38,180 --> 00:14:41,770 და გააცნობიეროს, თუ არ უკვე, Zamyla dives შევიდა ორივე, hash 330 00:14:41,770 --> 00:14:43,260 მაგიდები და ცდილობს, უფრო დეტალურად. 331 00:14:43,260 --> 00:14:45,630 და ვიდეო Walkthrough არის ჩართული P-ნაკრები სპეც. 332 00:14:45,630 --> 00:14:46,590 ეს იყო trie - 333 00:14:46,590 --> 00:14:51,670 T-R-I-E. და რა იყო საინტერესო შესახებ ეს იყო, რომ ქრონომეტრაჟი 334 00:14:51,670 --> 00:14:59,510 ეძებს სახელწოდება, ისევე როგორც Maxwell ბოლო დროს, იყო დიდი O თუ რა? 335 00:14:59,510 --> 00:15:01,040 რა არის ეს? 336 00:15:01,040 --> 00:15:01,920 >> აუდიტორია: რაოდენობამ წერილები. 337 00:15:01,920 --> 00:15:02,550 >> დავით Malan: პუნქტების წერილები. 338 00:15:02,550 --> 00:15:03,210 გავიგე ორი რამ. 339 00:15:03,210 --> 00:15:04,630 ხმების წერილები და მუდმივი დროში. 340 00:15:04,630 --> 00:15:05,540 მოდით წავიდეთ ერთად, რომ პირველი. 341 00:15:05,540 --> 00:15:06,410 რიგი წერილები. 342 00:15:06,410 --> 00:15:10,195 ასევე, ამ მონაცემების სტრუქტურას, გაწვევას, არის მიყვარს ხე, ოჯახის ხე, თითოეული 343 00:15:10,195 --> 00:15:12,860 რომელთა კვანძების შედგება მასივები. 344 00:15:12,860 --> 00:15:16,300 და იმ მასივების არიან მითითებას სხვა ასეთი კვანძების, ან სხვა ამგვარი 345 00:15:16,300 --> 00:15:17,670 მასივების in ხე. 346 00:15:17,670 --> 00:15:22,890 >> ასე რომ, თუ გვინდოდა შემდგომში გადაწყვეტს თუ არა Maxwell არის აქ, მე რომ ვთქვათ 347 00:15:22,890 --> 00:15:26,890 პირველი მასივი, ზუსტად იმ დასაწყისში ხე, ე.წ. root, თავზე 348 00:15:26,890 --> 00:15:30,521 trie და შემდეგ მ მაჩვენებელი, მაშინ მაჩვენებელი, მაშინ x, 349 00:15:30,521 --> 00:15:31,710 w, e, l, ლ. 350 00:15:31,710 --> 00:15:34,910 და მაშინ, როდესაც მე ვხედავ რაღაც განსაკუთრებული სიმბოლო, აღნიშნა, აქ, სამკუთხედის. 351 00:15:34,910 --> 00:15:38,480 კოდის დაინახავთ, გთავაზობთ, ხორციელდება bool, უბრალოდ ამბობდა დიახ 352 00:15:38,480 --> 00:15:40,540 ან არა, სიტყვა აჩერებს აქ. 353 00:15:40,540 --> 00:15:45,270 >> ისე, ერთხელ ჩვენ წავიდა M-A-X-W-E-L-L, იგრძნობა შვიდი, შესაძლოა, 354 00:15:45,270 --> 00:15:48,910 რვა თუ ჩვენ ერთი წარსულში, რვა ნაბიჯები, რათა იპოვოს Maxwell. 355 00:15:48,910 --> 00:15:53,050 ან მოდით ეძახით კ მაგრამ გავიხსენოთ ბოლო დროს, მე ამტკიცებდა, რომ თუ იქ 356 00:15:53,050 --> 00:15:57,540 რეალურად მაქსიმალური სიგრძე on სიტყვა, ისევე როგორც 40-რაღაც-უცნაური პერსონაჟი, 357 00:15:57,540 --> 00:16:00,810 მაქსიმალური სიგრძე გულისხმობს მუდმივი მნიშვნელობა. 358 00:16:00,810 --> 00:16:05,770 ასე რომ, რეალურად, დიახ, ეს ტექნიკურად დიდი O 8 ან 7, ან მართლაც დიდი O კ მაგრამ 359 00:16:05,770 --> 00:16:09,420 თუ არსებობს სასრული ქუდი, თუ რა K შეიძლება იყოს, ეს მუდმივი. 360 00:16:09,420 --> 00:16:12,080 ასე რომ, ეს არის ის, დიდი O of 1 დღის ბოლოს. 361 00:16:12,080 --> 00:16:13,040 >> არ რეალურ სამყაროში. 362 00:16:13,040 --> 00:16:15,960 არა, როდესაც თქვენ რეალურად დაიწყოს თვალს თქვენი საათი როგორც თქვენი პროგრამის გაშვებული. 363 00:16:15,960 --> 00:16:20,690 ეს აბსოლუტურად იქნება ცოტა ნელი, ვიდრე ნამდვილად მუდმივი 364 00:16:20,690 --> 00:16:21,840 დროს ერთი ნაბიჯია. 365 00:16:21,840 --> 00:16:25,540 ეს იქნება შვიდი ან რვა ნაბიჯი, მაგრამ მაინც, რომ ბევრად, ბევრად უკეთესი 366 00:16:25,540 --> 00:16:30,080 ვიდრე ალგორითმი, როგორიცაა დიდი ო ო, რომ დამოკიდებულია ზომის რა 367 00:16:30,080 --> 00:16:31,220 მონაცემთა სტრუქტურას. 368 00:16:31,220 --> 00:16:34,970 >> გავითვალისწინოთ upside აქ ჩვენ ჩადეთ მილიონი სახელები შევიდა ამ 369 00:16:34,970 --> 00:16:38,170 მონაცემთა სტრუქტურის, მაგრამ კიდევ რამდენი ნაბიჯები იგი აპირებს us იპოვონ 370 00:16:38,170 --> 00:16:40,480 Maxwell ამ შემთხვევაში? 371 00:16:40,480 --> 00:16:40,780 არა. 372 00:16:40,780 --> 00:16:41,820 ის unaffected. 373 00:16:41,820 --> 00:16:45,480 და დღემდე, არა მგონია, ჩვენ ვნახეთ მაგალითია მონაცემთა სტრუქტურის ან 374 00:16:45,480 --> 00:16:48,560 ალგორითმი, რომელიც იყო სრულიად unaffected გარე 375 00:16:48,560 --> 00:16:50,040 ქცევაში, რომ. 376 00:16:50,040 --> 00:16:51,160 მაგრამ ეს არ უნდა იყოს გასაოცარი. 377 00:16:51,160 --> 00:16:52,900 ეს არ შეიძლება ერთადერთი გამოსავალი ამისთვის P-ნაკრები 378 00:16:52,900 --> 00:16:53,570 >> და ეს არ არის. 379 00:16:53,570 --> 00:16:55,980 ეს არ არის აუცილებელი მონაცემები სტრუქტურა უნდა gravitate to, 380 00:16:55,980 --> 00:16:58,220 იმიტომ, რომ მოსწონს hash მაგიდები, tradeoff. 381 00:16:58,220 --> 00:17:00,500 რა ფასი თქვენ გადაიხადოს აქ? 382 00:17:00,500 --> 00:17:00,940 მეხსიერება. 383 00:17:00,940 --> 00:17:02,890 ვგულისხმობ, ეს ბარბაროსულ თანხის მეხსიერება. 384 00:17:02,890 --> 00:17:05,569 და ვერ საკმაოდ დანახვა, რადგან ავტორი ამ სურათში 385 00:17:05,569 --> 00:17:09,420 აშკარად truncated ყველა მასივები, და ჩვენ არ ხედავს ბევრი და 386 00:17:09,420 --> 00:17:12,700 B და C-ს და Q-ს და Y-ს და Z-ის ამ მასივები. 387 00:17:12,700 --> 00:17:13,630 მაგრამ ისინი იქ. 388 00:17:13,630 --> 00:17:17,660 >> თითოეული ეს კვანძების არის მთელი რიგი ზოგიერთი 26 ან მეტი ბაიტი, თითოეული 389 00:17:17,660 --> 00:17:19,170 რაც წარმოადგენს წერილში. 390 00:17:19,170 --> 00:17:22,920 27 ჩვენს შემთხვევაში, ასე, რომ ჩვენ შეგვიძლია მხარი დაუჭიროს apostrophes პრობლემის ნაკრები. 391 00:17:22,920 --> 00:17:27,030 ასე რომ, ამ მონაცემების სტრუქტურას მართლაც, მართლაც ხშირი და კარს. 392 00:17:27,030 --> 00:17:30,880 და ეს მარტო შეიძლება დასრულდეს up slowing რამ ქვემოთ, ან თუნდაც რაზეც თქვენ 393 00:17:30,880 --> 00:17:32,240 გაცილებით მეტი სივრცე. 394 00:17:32,240 --> 00:17:34,020 თუმცა ისევ და ისევ, ჩვენ შეგვიძლია დავხატოთ შედარება აქ. 395 00:17:34,020 --> 00:17:39,190 >> შეგახსენებთ, ხოლო უკან, მივაღწიეთ ბევრად უფრო საინტერესო გაშვებული დროს დახარისხება 396 00:17:39,190 --> 00:17:42,880 როდესაც ვიყენებთ შერწყმა დალაგების, მაგრამ ფასი ვიხდიდით, რათა მივაღწიოთ ო სისტემიდან ო for შერწყმა 397 00:17:42,880 --> 00:17:46,930 დალაგების საჭირო, რომ ვხარჯავთ მეტი რა რესურსი? 398 00:17:46,930 --> 00:17:47,690 მეტი სივრცე. 399 00:17:47,690 --> 00:17:50,530 ჩვენ გვჭირდებოდა მეორად მასივი კოპირება ადამიანები, ისევე, როგორც 400 00:17:50,530 --> 00:17:51,620 ჩვენ გავაკეთეთ აქ სცენაზე. 401 00:17:51,620 --> 00:17:55,880 ასე რომ, კიდევ ერთხელ, ცხადად არ გამარჯვებული, მაგრამ სუბიექტური დიზაინი 402 00:17:55,880 --> 00:17:57,710 გადაწყვეტილება იქნეს მიღებული. 403 00:17:57,710 --> 00:17:58,060 >> ყველა უფლება. 404 00:17:58,060 --> 00:17:59,130 ასე რომ, როგორ ამის შესახებ? 405 00:17:59,130 --> 00:18:02,050 ნებისმიერ მსურველს აღიარებს, რომელიც D-Hall? 406 00:18:02,050 --> 00:18:02,440 OK. 407 00:18:02,440 --> 00:18:03,170 ასე რომ, სამი ჩვენგანი. 408 00:18:03,170 --> 00:18:03,750 Mather სახლი. 409 00:18:03,750 --> 00:18:05,070 ასე რომ, ეს არის Mather-ის სასადილო. 410 00:18:05,070 --> 00:18:09,650 მე დადებს ყველა სასადილო დარბაზები stacks საქართველოს ქაღალდის მოსწონს ეს. 411 00:18:09,650 --> 00:18:11,950 და ეს არის რეალურად წარმომადგენელი რაღაც ჩვენ 412 00:18:11,950 --> 00:18:13,050 აშკარად ჩანს უკვე. 413 00:18:13,050 --> 00:18:14,850 ჩვენ მას ფაქტიურად დასტის. 414 00:18:14,850 --> 00:18:18,970 და სტეკი, იმ თვალსაზრისით, თქვენი კომპიუტერის მეხსიერებაში, თუ სად მონაცემთა მიდის 415 00:18:18,970 --> 00:18:20,460 ხოლო ფუნქციები მიმდინარეობს მოუწოდა. 416 00:18:20,460 --> 00:18:23,410 >> მაგალითად, თუ რა სახის რამ წავიდეთ on დასტის მიმართებაში 417 00:18:23,410 --> 00:18:27,420 მეხსიერება ჩვენ განიხილეს ამ კვირის განმავლობაში წარსულში? 418 00:18:27,420 --> 00:18:28,736 რა არის ეს? 419 00:18:28,736 --> 00:18:29,670 >> აუდიტორია: კავშირი ფუნქციები. 420 00:18:29,670 --> 00:18:30,260 >> დავით Malan: მე ბოდიში. 421 00:18:30,260 --> 00:18:31,210 >> აუდიტორია: კავშირი ფუნქციები. 422 00:18:31,210 --> 00:18:33,590 >> დავით Malan: კავშირი ფუნქციები, მაგრამ კონკრეტულად, რა შიგნით თითოეული 423 00:18:33,590 --> 00:18:35,340 იმ ფარგლებში? 424 00:18:35,340 --> 00:18:37,220 რა სახის რამ? 425 00:18:37,220 --> 00:18:37,460 ჰო. 426 00:18:37,460 --> 00:18:38,500 ასე რომ, ადგილობრივი ცვლადი. 427 00:18:38,500 --> 00:18:43,080 ნებისმიერი გვჭირდებოდა ზოგიერთი ადგილობრივი შენახვა, ისევე როგორც არგუმენტი, ან int მე, ან int 428 00:18:43,080 --> 00:18:45,940 temp, ან რაც ადგილობრივი ცვლადი, ჩვენ 429 00:18:45,940 --> 00:18:47,210 აყენებს, რომ დასტის. 430 00:18:47,210 --> 00:18:49,610 და ჩვენ მას დასტის რადგან იმ layering იდეა. 431 00:18:49,610 --> 00:18:52,940 უბრალოდ ასეთი მატჩები ერთად რეალობას, კონცეფციის შესახებ. 432 00:18:52,940 --> 00:18:56,650 >> მაგრამ აღმოჩნდება, რომ დასტის ასევე შეგიძლიათ იქნას, როგორც მონაცემთა სტრუქტურა, 433 00:18:56,650 --> 00:19:00,110 ალტერნატივა მასივი, ალტერნატიული to უკავშირდება სიაში. 434 00:19:00,110 --> 00:19:02,770 რაღაც კონცეპტუალურად უფრო საინტერესო რომ ჯერ კიდევ შესაძლებელია 435 00:19:02,770 --> 00:19:06,030 განხორციელებული გამოყენებით ან იმ რამ, მაგრამ ეს სხვა ტიპის 436 00:19:06,030 --> 00:19:09,140 მონაცემთა სტრუქტურის მხარდამჭერი, ნამდვილად, მხოლოდ ორი ოპერაციებში. 437 00:19:09,140 --> 00:19:11,000 მაგრამ შეგიძლიათ დამატების შესახებ fancier თვისებები, ვიდრე ეს. 438 00:19:11,000 --> 00:19:12,180 მაგრამ ეს მხოლოდ საფუძვლებს - 439 00:19:12,180 --> 00:19:13,510 დააყენებს და საესტრადო. 440 00:19:13,510 --> 00:19:19,240 >> და იდეა ერთად სტეკი არის, რომ თუ აქ, ან მის გარეშე Annenberg 441 00:19:19,240 --> 00:19:22,880 იცის, tray from მეზობლად ნომრით 9 იგი. 442 00:19:22,880 --> 00:19:23,870 ასე რომ მხოლოდ int. 443 00:19:23,870 --> 00:19:26,990 მინდა დააყენებს ამ გადატანა მონაცემები სტრუქტურა, რომელიც ამჟამად თავისუფალია. 444 00:19:26,990 --> 00:19:28,790 მიგვაჩნია, რომ ეს ბოლოში დასტის. 445 00:19:28,790 --> 00:19:33,150 მე დააყენებს ეს რიცხვი 9 გადატანა დასტის, და ახლა უფლება არსებობს. 446 00:19:33,150 --> 00:19:36,040 >> მაგრამ საინტერესო ის სტეკი ის არის, რომ თუ მე ახლა მინდა დააყენებს 447 00:19:36,040 --> 00:19:40,210 ზოგიერთი სხვა ღირებულების, ისევე როგორც მე -17 და მე დააყენებს ამ გადატანა დასტის, მე ვაპირებ გაკეთებას 448 00:19:40,210 --> 00:19:43,290 მხოლოდ ინტუიციური რამ, მე მხოლოდ აპირებს იმისათვის, რომ ეს უფლება, სადაც ჩვენ ადამიანები 449 00:19:43,290 --> 00:19:45,180 იქნება მიდრეკილია თქმით, წლის დასაწყისში. 450 00:19:45,180 --> 00:19:48,850 მაგრამ რა საინტერესოა ახლა არის, როგორ მივიღებ 9 საათზე? 451 00:19:48,850 --> 00:19:50,670 თქვენ იცით, მე არ გარეშე გარკვეული ძალისხმევა. 452 00:19:50,670 --> 00:19:54,070 >> რა არის საინტერესო სტეკი არის, რომ დიზაინი, 453 00:19:54,070 --> 00:19:56,330 ეს lifo მონაცემთა სტრუქტურას. 454 00:19:56,330 --> 00:19:59,680 სულელური გზა, სადაც აღწერილია უკანასკნელი, პირველ გარეთ. 455 00:19:59,680 --> 00:20:03,280 ასე რომ, ბოლო ნომერი ამ დროს 17 წლის იყო. 456 00:20:03,280 --> 00:20:07,540 ასე რომ, თუ მინდა პოპ რაღაც შუქი საქართველოს დასტის, ეს შეიძლება იყოს მხოლოდ 17. 457 00:20:07,540 --> 00:20:11,890 ასე რომ სავალდებულო ბრძანებით ოპერაციების აქ, სადაც ბოლო პუნქტის 458 00:20:11,890 --> 00:20:14,260 ამ უნდა იყოს პირველი out. 459 00:20:14,260 --> 00:20:16,440 აქედან გამომდინარე აკრონიმი, lifo. 460 00:20:16,440 --> 00:20:19,160 >> რატომ შეიძლება ეს იყოს სასარგებლო? 461 00:20:19,160 --> 00:20:22,690 მათი კონტექსტში, რომელშიც ნეტავ მინდა მონაცემთა სტრუქტურის ასე? 462 00:20:22,690 --> 00:20:24,810 ასევე, ეს, რა თქმა უნდა სასარგებლო შიგნით კომპიუტერი. 463 00:20:24,810 --> 00:20:29,050 ასე რომ, ოპერაციული სისტემა აშკარად გამოიყენოს ეს მონაცემთა ამგვარი სტრუქტურა stacks. 464 00:20:29,050 --> 00:20:32,800 ჩვენ მოვისმენთ ასევე ვხედავთ იგივე იდეა როდესაც საქმე ვებ გვერდები. 465 00:20:32,800 --> 00:20:35,890 ასე რომ, ამ კვირაში და მომავალ კვირას და მის ფარგლებს გარეთ, და როგორც თქვენ დაიწყოს ახორციელებს ვებგვერდი 466 00:20:35,890 --> 00:20:39,490 გვერდების ენის მოუწოდა HTML, შეგიძლიათ რეალურად გამოვიყენოთ მონაცემთა სტრუქტურის მოსწონს 467 00:20:39,490 --> 00:20:42,690 ამ დასადგენად გვერდი არის სწორად ფორმატის. 468 00:20:42,690 --> 00:20:47,170 იმის გამო, რომ ჩვენ დავინახავთ ყველა ვებ გვერდების დაიცვას სახის იერარქიაში, indentation 469 00:20:47,170 --> 00:20:52,030 რომელიც, იმ დღის ბოლოს, იქნება ხის სტრუქტურაში ქვეშ hood. 470 00:20:52,030 --> 00:20:53,620 ასე რომ, უფრო, რომ სულ რაღაც ცოტა. 471 00:20:53,620 --> 00:20:56,560 >> მაგრამ ახლა, მოდით შესთავაზოს for მომენტი, თუ როგორ უნდა წავსულიყავით შესახებ 472 00:20:56,560 --> 00:20:58,830 წარმოადგენს რა სტეკი არის? 473 00:20:58,830 --> 00:21:03,370 ნება მომეცით შესთავაზოს, რომ ჩვენ განახორციელოს დასტის კოდით მოსწონს ეს. 474 00:21:03,370 --> 00:21:07,990 ასე რომ დასტის აპირებს აქვს შიგნით ეს ორი რამ, მასივი, სახელწოდებით ქაღალდის, 475 00:21:07,990 --> 00:21:09,510 უბრალოდ უნდა შეესაბამებოდეს დემო. 476 00:21:09,510 --> 00:21:12,660 და თითოეული ელემენტი, რომ მასივი იქნება ტიპის int. 477 00:21:12,660 --> 00:21:14,740 და შესაძლებლობები, სავარაუდოდ, რა? 478 00:21:14,740 --> 00:21:18,796 იმის გამო, რომ მე არ წერია სრული განმარტება აქ. 479 00:21:18,796 --> 00:21:21,535 >> ალბათ მაქსიმუმ ზომის მასივი. 480 00:21:21,535 --> 00:21:25,150 და ეს, ალბათ გამოცხადდა მკვეთრი განისაზღვროს ზედა ფაილი, ზოგიერთი 481 00:21:25,150 --> 00:21:28,450 სახის მუდმივ როგორც ითვალისწინებს უბრალო კაპიტალიზაცია. 482 00:21:28,450 --> 00:21:32,250 ასე რომ სადღაც მოცულობა განისაზღვრება როგორც მაქსიმალური ზომა. 483 00:21:32,250 --> 00:21:35,590 იმავდროულად, შიგნით მონაცემთა სტრუქტურის ცნობილია როგორც დასტის იქ 484 00:21:35,590 --> 00:21:38,630 იყოს მთელი რიცხვი მხოლოდ ცნობილია უბრალოდ ზომა. 485 00:21:38,630 --> 00:21:43,400 >> ასე რომ, თუ მე წარმოადგინოს ეს ახლა pictorially, მოდით ვივარაუდოთ, რომ ამ 486 00:21:43,400 --> 00:21:48,070 მთელი შავი ყუთი წარმოადგენს ჩემს დასტის. 487 00:21:48,070 --> 00:21:50,070 შიგნით ეს ორი ცვლადი. 488 00:21:50,070 --> 00:21:54,780 ამიტომ, მე ვაპირებ შევაჩერო პირველი, როგორც ზომა. 489 00:21:54,780 --> 00:21:57,420 ხოლო მეორე მე ვაპირებ მიაპყროს როგორც მასივი. 490 00:21:57,420 --> 00:22:01,060 >> მაგრამ შენარჩუნება რამ თანმიმდევრული, ჩვეულებრივ მე მიაპყროს მასივი მოსწონს 491 00:22:01,060 --> 00:22:04,910 ეს, მაგრამ ეს სახის ლამაზი თუ ჩვენ ემთხვევა რეალობას, ან 492 00:22:04,910 --> 00:22:06,230 ემთხვევა ფსიქიკური მოდელი. 493 00:22:06,230 --> 00:22:12,880 ნება მომეცით, ნაცვლად მიაპყროს მასივი ვერტიკალურად, რაც არის, კიდევ ერთხელ, 494 00:22:12,880 --> 00:22:13,840 მხატვრის rendition. 495 00:22:13,840 --> 00:22:16,610 აბსოლიტურად სულ ერთია, თუ რას არის ქვეშ hood. 496 00:22:16,610 --> 00:22:20,350 და ჩვენ ვთქვათ, რომ, ჩვეულებრივ, სიმძლავრის იქნება სამი. 497 00:22:20,350 --> 00:22:23,480 ასე რომ, ეს იქნება ადგილმდებარეობა 0, ამ იქნება ადგილმდებარეობა 1, ამ 498 00:22:23,480 --> 00:22:25,740 იქნება მდებარეობა 2. 499 00:22:25,740 --> 00:22:29,330 >> თუ მე მოსყიდვა ერთად სტრესი ეკუთვნოდა, რომ ვინმე მინდა ამუშავება და აწარმოებს 500 00:22:29,330 --> 00:22:30,870 ფორუმში აქ მხოლოდ ერთი წუთით? 501 00:22:30,870 --> 00:22:31,960 კარგი, ვნახე მხრივ პირველი. 502 00:22:31,960 --> 00:22:33,950 კარგით up. 503 00:22:33,950 --> 00:22:36,500 ყველა უფლება. 504 00:22:36,500 --> 00:22:38,760 ასე რომ, ვფიქრობ, სტივენ. 505 00:22:38,760 --> 00:22:40,035 კარგით up. 506 00:22:40,035 --> 00:22:40,770 ყველა უფლება. 507 00:22:40,770 --> 00:22:46,760 >> მაგრამ დავუშვათ ახლა ჩვენ გადახვევა პირველადი სახელმწიფო, სადაც მე 508 00:22:46,760 --> 00:22:52,180 ახლახან განაცხადა, დასტის, და ეს იქნება სიმძლავრის სამი. 509 00:22:52,180 --> 00:22:54,470 მაგრამ ზომა ჯერჯერობით არ განისაზღვრება. 510 00:22:54,470 --> 00:22:56,100 ქაღალდის ჯერ კიდევ არ არის დადგენილი. 511 00:22:56,100 --> 00:22:57,300 ასე რომ რამდენიმე კითხვებს პირველი. 512 00:22:57,300 --> 00:23:01,310 და ნება მომეცით, გადმოგცეთ mic ასე რომ თქვენ მიიღოს უფრო აქტიურად ამ. 513 00:23:01,310 --> 00:23:05,190 >> რა არის შიგნით ზომა ამ დროს ამ დროს, თუ ყველა მე არ კეთდება არის 514 00:23:05,190 --> 00:23:09,340 გამოცხადებული დასტის ერთად ერთი ხაზი კოდი? 515 00:23:09,340 --> 00:23:10,100 >> STEVEN: არ ღირს. 516 00:23:10,100 --> 00:23:12,080 >> დავით Malan: კარგი, არ არის ბევრი. 517 00:23:12,080 --> 00:23:14,410 ვიცით, რა არის შიგნით ზომა, ვიცით, რა არის შიგნით 518 00:23:14,410 --> 00:23:16,330 ამ მასივი აქ? 519 00:23:16,330 --> 00:23:18,630 >> STEVEN: უბრალოდ შემთხვევით კოდი, არა? 520 00:23:18,630 --> 00:23:20,220 უბრალოდ - 521 00:23:20,220 --> 00:23:23,230 >> დავით Malan: ჰო, მე ვაპირებ მას კოდექსი, მაგრამ შემთხვევით - 522 00:23:23,230 --> 00:23:23,820 >> STEVEN: სიტუაცია. 523 00:23:23,820 --> 00:23:28,290 >> დავით Malan: რამ, როგორიცაა შემთხვევით 524 00:23:28,290 --> 00:23:28,870 >> STEVEN: Bits. 525 00:23:28,870 --> 00:23:29,530 >> დავით Malan: Bits, არა? 526 00:23:29,530 --> 00:23:31,190 ასე რომ, ნაგვის ღირებულებები, არა? 527 00:23:31,190 --> 00:23:33,470 ასე რომ permutations of 0 და 1 ს. 528 00:23:33,470 --> 00:23:35,920 ნარჩენების წინა ჩვეულებების ამ მეხსიერებაში. 529 00:23:35,920 --> 00:23:38,150 და ჩვენ ნამდვილად არ ვიცით, რა ღირებულებები მათ, ასე რომ, როგორც წესი, მიაპყროს მათ 530 00:23:38,150 --> 00:23:38,930 კითხვის ნიშნები. 531 00:23:38,930 --> 00:23:41,990 >> ასე რომ, პირველი, რაც ჩვენ, სავარაუდოდ აპირებს გსურთ აქ - 532 00:23:41,990 --> 00:23:46,630 და ნება მიბოძეთ ამ სფეროში შიგნით არსებობს სახელი - ქაღალდის. 533 00:23:46,630 --> 00:23:49,540 რა უნდა სავარაუდოდ ინიციალიზაცია ზომა, რათა, თუ გვინდა 534 00:23:49,540 --> 00:23:51,040 დაიწყოს გამოყენებით ამ დასტის? 535 00:23:51,040 --> 00:23:53,070 >> STEVEN: უჯრა არის ქვე 3. 536 00:23:53,070 --> 00:23:53,910 >> დავით Malan: ასე რომ, OK. 537 00:23:53,910 --> 00:23:56,710 იმისათვის რომ ნათელი, მოცულობა ცხადდება სხვაგან, როგორც სამი. 538 00:23:56,710 --> 00:23:58,570 და ეს არის ის, რაც მე გამოყენებული გამოყოფას მასივი. 539 00:23:58,570 --> 00:24:03,535 ზომა აპირებს მიმართოს, თუ რამდენი ქაღალდის ამჟამად on დასტის. 540 00:24:03,535 --> 00:24:03,880 >> STEVEN: ნულოვანი. 541 00:24:03,880 --> 00:24:04,460 >> დავით Malan: ასე რომ ეს უნდა იყოს ნულოვანი. 542 00:24:04,460 --> 00:24:07,760 ასე რომ წავიდეთ წინ, და ნებისმიერი თითი მიაპყროს ნულოვანი ზომის. 543 00:24:07,760 --> 00:24:08,440 ყველა უფლება. 544 00:24:08,440 --> 00:24:10,920 ასე რომ, ახლა, რა შიგნით ამ აქ, ჩვენ არ ვიცით. 545 00:24:10,920 --> 00:24:12,160 ეს არის რეალურად მხოლოდ ნაგვის ღირებულებებს. 546 00:24:12,160 --> 00:24:14,800 ასე რომ, ჩვენ შეიძლება შევაჩერო კითხვის ნიშნები, მაგრამ მოდით შენარჩუნება ფორუმში სუფთა ახლა 547 00:24:14,800 --> 00:24:16,300 იმიტომ, რომ არა აქვს მნიშვნელობა რა არის იქ. 548 00:24:16,300 --> 00:24:19,130 ჩვენ არ გვჭირდება ინიციალიზაცია მასივი არაფერი, რადგან თუ ჩვენ ვიცით, რომ 549 00:24:19,130 --> 00:24:23,100 ზომის სტეკი შეადგენს ნულს, ასევე, ჩვენ არ უნდა ეძებს არაფერი 550 00:24:23,100 --> 00:24:25,590 ამ მასივი მაინც ზე ამ მომენტში. 551 00:24:25,590 --> 00:24:29,970 >> ასე რომ, ახლა ვარაუდობენ, რომ მე დააყენებს ნომერი 9 გადატანა დასტის. 552 00:24:29,970 --> 00:24:33,750 როგორ უნდა განახლდეს მონაცემთა სტრუქტურის შიგნით ამ შავი ყუთი? 553 00:24:33,750 --> 00:24:35,540 რა ღირებულებები უნდა შეცვალოს? 554 00:24:35,540 --> 00:24:36,200 >> STEVEN: ვადაში - 555 00:24:36,200 --> 00:24:37,400 ზომა? 556 00:24:37,400 --> 00:24:37,650 >> დავით Malan: OK. 557 00:24:37,650 --> 00:24:38,770 ზომა უნდა გახდეს, თუ რა? 558 00:24:38,770 --> 00:24:39,580 >> STEVEN: ზომა იქნება. 559 00:24:39,580 --> 00:24:39,870 >> დავით Malan: OK. 560 00:24:39,870 --> 00:24:41,110 ასე რომ, ზომა უნდა გახდეს ერთი. 561 00:24:41,110 --> 00:24:42,540 ასე რომ თქვენ ამის გაკეთება რამდენიმე გზა არსებობს. 562 00:24:42,540 --> 00:24:46,920 ნება მომეცით, გადმოგცეთ, ახლა თქვენი თითის არის საშლელი. 563 00:24:46,920 --> 00:24:47,260 ყველა უფლება. 564 00:24:47,260 --> 00:24:49,960 მაშინ ახლა თითის არის brush. 565 00:24:49,960 --> 00:24:50,330 ყველა უფლება. 566 00:24:50,330 --> 00:24:52,820 ახლა კი რა უნდა შეცვალოს, ცხადია, ამ მონაცემების სტრუქტურას? 567 00:24:52,820 --> 00:24:57,060 >> STEVEN: ჩვენ ვაპირებთ ეხლა ქვედა მდე 9. 568 00:24:57,060 --> 00:24:57,760 >> დავით Malan: 9. 569 00:24:57,760 --> 00:24:58,420 კარგი, კარგი. 570 00:24:58,420 --> 00:25:01,550 ასე რომ ჯერ კიდევ არ აქვს მნიშვნელობა, რა დროს ადგილმდებარეობა ერთი ან ორი, რადგან ისინი 571 00:25:01,550 --> 00:25:04,520 ნაგვის ღირებულებები, მაგრამ ჩვენ არ უნდა გადაიტვირთოთ ეძებს არსებობს, რადგან ზომა არის 572 00:25:04,520 --> 00:25:07,540 გვეუბნება, რომ მხოლოდ პირველი ელემენტი ფაქტიურად ლეგიტიმური. 573 00:25:07,540 --> 00:25:10,400 ასე რომ, ახლა მე დააყენებს 17 გადატანა სიაში. 574 00:25:10,400 --> 00:25:11,830 რა ხდება ამ სურათზე? 575 00:25:11,830 --> 00:25:14,720 >> STEVEN: So ზომა აპირებს მისვლას ორი. 576 00:25:14,720 --> 00:25:15,300 >> დავით Malan: OK. 577 00:25:15,300 --> 00:25:16,070 თქვენ eraser - 578 00:25:16,070 --> 00:25:16,810 oops. 579 00:25:16,810 --> 00:25:18,026 თქვენ eraser. 580 00:25:18,026 --> 00:25:18,840 >> STEVEN: Eraser. 581 00:25:18,840 --> 00:25:19,720 >> დავით Malan: შენ brush. 582 00:25:19,720 --> 00:25:20,560 >> STEVEN: Brush. 583 00:25:20,560 --> 00:25:20,920 >> დავით Malan: OK. 584 00:25:20,920 --> 00:25:21,600 და რა? 585 00:25:21,600 --> 00:25:22,600 >> STEVEN: და მერე - 586 00:25:22,600 --> 00:25:22,915 >> დავით Malan: ჩვენ მივიღებთ 17. 587 00:25:22,915 --> 00:25:24,760 >> STEVEN: ჩვენ გამყარებაში 17 თავზე, ასე - 588 00:25:24,760 --> 00:25:25,710 >> დავით Malan: კარგი, კარგი. 589 00:25:25,710 --> 00:25:27,040 >> STEVEN: - ვარდნა მას. 590 00:25:27,040 --> 00:25:27,530 >> დავით Malan ყველა უფლება. 591 00:25:27,530 --> 00:25:27,940 ის მიღების ადვილი. 592 00:25:27,940 --> 00:25:29,300 მე არ ვაპირებ, რომ დაგეხმაროთ ამ დროს. 593 00:25:29,300 --> 00:25:30,510 Push 22. 594 00:25:30,510 --> 00:25:31,720 >> STEVEN: შესრულებულია. 595 00:25:31,720 --> 00:25:34,870 ხდება eraser. 596 00:25:34,870 --> 00:25:37,340 მე ხდება brush. 597 00:25:37,340 --> 00:25:39,340 და მაშინ მე აყენებს 22. 598 00:25:39,340 --> 00:25:40,100 >> დავით Malan: 22. 599 00:25:40,100 --> 00:25:40,620 შესანიშნავი. 600 00:25:40,620 --> 00:25:41,380 ასე რომ, კიდევ ერთხელ. 601 00:25:41,380 --> 00:25:44,280 მე ახლა მიმდინარეობს დააყენებს გადატანა სტეკი 26. 602 00:25:44,280 --> 00:25:46,350 >> STEVEN: Ooh. 603 00:25:46,350 --> 00:25:50,278 Oh Gosh. 604 00:25:50,278 --> 00:25:52,520 თქვენ ნამდვილად დაიჭირეს me off დაცვის. 605 00:25:52,520 --> 00:25:53,703 >> დავით Malan: თქვენ არ რომ ეს მოდის? 606 00:25:53,703 --> 00:25:55,930 >> STEVEN: მე არ მინახავს ამ მოდის. 607 00:25:55,930 --> 00:25:58,756 შეგვეძლო თავიდან საწყის მოცულობა? 608 00:25:58,756 --> 00:25:59,790 >> დავით Malan: ეს კარგი კითხვაა. 609 00:25:59,790 --> 00:26:02,360 ასე რომ, ჩვენ ასეთი მოხატული საკუთარ თავს კუთხეში აქ. 610 00:26:02,360 --> 00:26:06,740 მართლაც არ არის კარგი გარეთ სტივენ იმიტომ, რომ ჩვენ გამოყოფილი ამ მასივი 611 00:26:06,740 --> 00:26:09,130 statically, ასე ვთქვათ, შიგნით მონაცემთა სტრუქტურას. 612 00:26:09,130 --> 00:26:12,170 და ჩვენ არსებითად მყარი კოდირებული ეს უნდა იყოს, ზომით სამი. 613 00:26:12,170 --> 00:26:14,170 ასე რომ, ჩვენ ვერ გადაანაწილოს იგი. 614 00:26:14,170 --> 00:26:20,020 >> ჩვენ შეგვეძლო თუ წავედით უკან, ჩვენ redefined ქაღალდის უნდა იყოს მაჩვენებელი, 615 00:26:20,020 --> 00:26:22,300 ჩვენ შემდეგ გამოიყენოთ malloc ხელით მეხსიერების. 616 00:26:22,300 --> 00:26:25,050 იმიტომ, რომ თუ ჩვენ მივიღეთ მეხსიერება დან ბევრი მეშვეობით malloc ჩვენ 617 00:26:25,050 --> 00:26:26,430 შეიძლება შემდეგ გასათავისუფლებლად იგი. 618 00:26:26,430 --> 00:26:29,630 მაგრამ სანამ ათავისუფლებს მას, შეგვეძლო გადაანაწილოს უფრო დიდი ბლოკი მეხსიერება, 619 00:26:29,630 --> 00:26:31,330 განაახლოს მაჩვენებელი და სხვ. 620 00:26:31,330 --> 00:26:33,500 მაგრამ ახლა, ეს ნამდვილად საუკეთესო შეგვიძლია. 621 00:26:33,500 --> 00:26:36,360 დააყენებს და საესტრადო რომლებიც სავარაუდოდ აპირებს უნდა სიგნალი რაიმე შეცდომა. 622 00:26:36,360 --> 00:26:40,270 >> ასე მაგალითად, ჩვენი განხორციელება საქართველოს ბიძგი შეიძლება დაბრუნდეს bool რომელიც 623 00:26:40,270 --> 00:26:42,390 ადრე დაბრუნდა ნამდვილი, ჭეშმარიტი, ნამდვილი. 624 00:26:42,390 --> 00:26:48,390 მაგრამ მეოთხედ, ის აპირებს დაბრუნების ცრუ, მაგალითად. 625 00:26:48,390 --> 00:26:48,540 ყველა უფლება. 626 00:26:48,540 --> 00:26:49,540 ძალიან კარგად გაკეთდეს. 627 00:26:49,540 --> 00:26:50,060 გილოცავთ. 628 00:26:50,060 --> 00:26:52,160 თქვენ მიღებული სტრესის ბურთი დღეს. 629 00:26:52,160 --> 00:26:53,110 >> [ტაში] 630 00:26:53,110 --> 00:26:54,382 >> STEVEN: დიდი მადლობა. 631 00:26:54,382 --> 00:26:55,680 >> დავით Malan: დიდი მადლობა. 632 00:26:55,680 --> 00:26:59,740 OK, ასე რომ ეს, როგორც ჩანს, არ არის ბევრი საქართველოს წინგადადგმული ნაბიჯი, არა? 633 00:26:59,740 --> 00:27:01,410 ჩვენ აღწერილი ამ მონაცემთა სტრუქტურას. 634 00:27:01,410 --> 00:27:02,320 ეს იყო დამაჯერებელი, არა? 635 00:27:02,320 --> 00:27:03,200 ოპერაციული სისტემები მომწონს. 636 00:27:03,200 --> 00:27:06,360 როგორც ჩანს შეიძლება მოცემული გამოუყენებია, და სხვა პროგრამებს მაინც. 637 00:27:06,360 --> 00:27:10,870 მაგრამ რა სულელური შეზღუდვა, რომ ჩვენ თავში ერთგვარი კვირაში ორი ლიმიტები 638 00:27:10,870 --> 00:27:12,880 სადაც ჩვენ არ დაფიქსირდა ზომის მასივების. 639 00:27:12,880 --> 00:27:15,010 >> ასე რომ მართლაც რამდენიმე გზა ჩვენ შეგვიძლია მოსაგვარებლად. 640 00:27:15,010 --> 00:27:18,750 ჩვენ შეგვეძლო დინამიურად გამოყოფს მასივი, არა მძიმე კოდირების მას, როგორც მე 641 00:27:18,750 --> 00:27:22,600 კეთდება აქ, არამედ ხელახლა გამოცხადების ეს, უბრალოდ უნდა იყოს მკაფიო, როგორც 642 00:27:22,600 --> 00:27:23,830 მსგავსი რამ. 643 00:27:23,830 --> 00:27:29,040 Int * ქაღალდის, არ წყვეტენ on მოცულობა ამჟამად. 644 00:27:29,040 --> 00:27:35,460 მაგრამ როდესაც ვაცხადებ დასტის სხვაგან ჩემს კოდი, მე მაშინ მოვუწოდებთ malloc, 645 00:27:35,460 --> 00:27:38,250 მიიღეთ მისამართი ბლოკი მეხსიერება, და მე ვერ დაავალოს 646 00:27:38,250 --> 00:27:39,980 რომ მიმართვაში ქაღალდის. 647 00:27:39,980 --> 00:27:43,340 >> შემდეგ კი, იმიტომ, რომ ეს უბრალოდ ბლოკი მეხსიერება, მე ვერ გაგრძელდება გამოყენება კვადრატულ 648 00:27:43,340 --> 00:27:45,450 bracket notation ჩვეულ რეჟიმში. 649 00:27:45,450 --> 00:27:49,020 იმის გამო, რომ მიუხედავად ერთგვარი ამ ფუნქციური ეკვივალენტს მასივების და 650 00:27:49,020 --> 00:27:50,820 მოცულობით მეხსიერება რომ მოვიდა უკან malloc. 651 00:27:50,820 --> 00:27:53,090 ჩვენ შეგვიძლია მკურნალობა ერთი, როგორც სხვა გამოყენების მაჩვენებელი არითმეტიკული ან 652 00:27:53,090 --> 00:27:54,440 კვადრატული ფრჩხილი notation. 653 00:27:54,440 --> 00:27:55,660 ასე რომ, ერთი მიდგომა. 654 00:27:55,660 --> 00:28:00,120 >> მაგრამ სხვაგვარად, როგორ შეიძლება ჩვენ შევასრულებთ იგივე მონაცემების სტრუქტურას, პოტენციურად? 655 00:28:00,120 --> 00:28:00,280 არა? 656 00:28:00,280 --> 00:28:04,530 ვგრძნობ, ჩვენ უბრალოდ მოგვარდება ამ პრობლემა, როგორიც ერთი კვირის წინ. 657 00:28:04,530 --> 00:28:08,860 რა იყო ამ პრობლემის მოგვარების რომ სტივენ შეუვარდნენ? 658 00:28:08,860 --> 00:28:10,370 ასე უკავშირდება სიები, მარჯვენა. 659 00:28:10,370 --> 00:28:13,410 >> თუ პრობლემა არის ის, რომ ჩვენ ხატვის საკუთარ თავს კუთხეში გამოიყოფა 660 00:28:13,410 --> 00:28:17,580 წინასწარ ძალიან პატარა მეხსიერება, რაც ჩვენ მაშინ უნდა როგორმე გაუმკლავდეს, ასევე, 661 00:28:17,580 --> 00:28:19,880 რატომ არა მხოლოდ თავიდან ავიცილოთ, რომ გასცეს საერთოდ? 662 00:28:19,880 --> 00:28:26,170 რატომ არ არის მხოლოდ გამოაცხადოს ქაღალდის უნდა იყოს მომცეთ კვანძის, Ergo უკავშირდება სია, 663 00:28:26,170 --> 00:28:30,740 შემდეგ კი უბრალოდ გამოყოფს ახალი კვანძების ყოველ ჯერზე სტივენ საჭირო ჯდება 664 00:28:30,740 --> 00:28:32,400 ნომერი შევიდა მონაცემთა სტრუქტურას. 665 00:28:32,400 --> 00:28:34,200 >> ასე რომ სურათს უნდა შეიცვალოს. 666 00:28:34,200 --> 00:28:38,220 ეს არ უნდა იყოს, როგორც სუფთა და როგორც მარტივია, უბრალოდ მასივი სამი ints. 667 00:28:38,220 --> 00:28:42,970 ახლა ეს იქნება მომცეთ struct, და რომ struct აპირებს 668 00:28:42,970 --> 00:28:44,830 აქვს int და მომავალი მაჩვენებელი. 669 00:28:44,830 --> 00:28:47,670 იგი აპირებს გამოიწვიოს მეშვეობით, რომ მაჩვენებელი კიდევ ერთი ასეთი struct to 670 00:28:47,670 --> 00:28:48,600 სხვა ასეთი struct. 671 00:28:48,600 --> 00:28:50,560 ასე რომ სურათს რომ რეალურად მიიღეთ ცოტა მესიეს. 672 00:28:50,560 --> 00:28:52,950 და ჩვენ მინდა არ ისრები ჩვევების ყველაფერი ერთად. 673 00:28:52,950 --> 00:28:55,280 >> მაგრამ ეს ჯარიმა, მარჯვენა, რადგან ჩვენ ვნახეთ, თუ როგორ უნდა გავაკეთოთ ეს. 674 00:28:55,280 --> 00:28:58,180 და კიდევ თქვენ გაქვთ კომფორტული ახორციელებს რაღაც დაკავშირებული 675 00:28:58,180 --> 00:29:01,450 სია, რომელიც თქვენ უნდა, თუ აირჩიოს განახორციელოს hash მაგიდა 676 00:29:01,450 --> 00:29:05,120 ცალკე chaining for P-ნაკრები 6, შეგიძლიათ გამოიყენოს იგი როგორც შენობა ბლოკი, ან 677 00:29:05,120 --> 00:29:08,870 ნივთიერება, ან Scratch საუბარი, პროცედურა, რაღაც, რომ თქვენ, თქვენ 678 00:29:08,870 --> 00:29:12,560 შექმნა თქვენი საკუთარი თავსატეხი ცალი რომ ამის შემდეგ შეგიძლიათ reuse. 679 00:29:12,560 --> 00:29:17,090 ასე რომ tradeoffs, მაგრამ პოტენციურ გზებზე რომ ჩვენ რეალურად მინახავს ადრე. 680 00:29:17,090 --> 00:29:20,560 >> ასე რომ, ხშირად, ხედავთ ამ ყველა ერთი ან ორი წელი, როდესაც Apple ავრცელებს 681 00:29:20,560 --> 00:29:23,060 რაღაც ახალი და ყველა გიჟები ადამიანები გამოდიან გარეთ Apple 682 00:29:23,060 --> 00:29:27,050 შესანახად შეძენა მათი მარგინალური განაახლოს on აპარატურა. 683 00:29:27,050 --> 00:29:30,420 ამას, ეს კარგია, რადგან მე ვარ ერთ იმ ხალხს. 684 00:29:30,420 --> 00:29:35,140 ასე რომ, თუ რა სახის მონაცემების სტრუქტურა შეიძლება წარმოადგენს ეს რეალობა? 685 00:29:35,140 --> 00:29:36,980 >> ისე, მოდით დავარქვათ მდგომ, ხაზი. 686 00:29:36,980 --> 00:29:40,270 ასე რომ, დიდი ბრიტანეთის რომ მას, როგორც წესი, მდგომ მაინც, ამიტომ ლამაზი სახელი. 687 00:29:40,270 --> 00:29:44,960 ხოლო ორი ოპერაცია, მდგომ ხელს უწყობს ჩვენ ამას დავარქმევთ enqueue 688 00:29:44,960 --> 00:29:48,900 ოპერაცია და dequeue ოპერაცია, რაც მსგავსი 689 00:29:48,900 --> 00:29:50,120 სულის დააყენებს და საესტრადო. 690 00:29:50,120 --> 00:29:54,060 უბრალოდ ერთგვარი განსხვავებული კონვენცია, რასაც ჩვენ მოუწოდებდა ამ. 691 00:29:54,060 --> 00:29:57,680 მაგრამ enqueue რაღაც იმას ნიშნავს, რომ დაამატოთ ან ჩადეთ დისკი მონაცემებით სტრუქტურა. 692 00:29:57,680 --> 00:29:59,570 დან dequeue ნიშნავს ამოიღონ იგი. 693 00:29:59,570 --> 00:30:05,170 მაგრამ იმის გამო, რომ სტეკი იყო lifo მონაცემები სტრუქტურა, მდგომ არის პირველი, 694 00:30:05,170 --> 00:30:06,740 პირველი out მონაცემთა სტრუქტურას. 695 00:30:06,740 --> 00:30:10,050 >> თუ თქვენ ხართ პირველი პირი ხაზი, თქვენ იქნება პირველი პირი მისაღებად 696 00:30:10,050 --> 00:30:12,420 გარეთ ხაზი და ყიდვა თქვენი მოწყობილობა. 697 00:30:12,420 --> 00:30:18,070 წარმოიდგინეთ, რამდენად დაარღვიოს ეს ხალხი იქნება თუ ვაშლის ნაცვლად გამოიყენება დასტის, ამისთვის 698 00:30:18,070 --> 00:30:21,250 მაგალითად, განახორციელოს კრეფა up თქვენი ახალი სათამაშო. 699 00:30:21,250 --> 00:30:24,310 ასე რომ რიგები აზრი, რა თქმა უნდა, და ჩვენ შეიძლება ვიფიქროთ, ყველა სახის 700 00:30:24,310 --> 00:30:27,480 განცხადებები, სავარაუდოდ, for რიგები, განსაკუთრებით მაშინ, როდესაც გსურთ სამართლიანობა. 701 00:30:27,480 --> 00:30:30,040 ასე რომ, როგორ შეიძლება ჩვენ განახორციელოს ეს როგორც მონაცემთა სტრუქტურა? 702 00:30:30,040 --> 00:30:33,680 >> ისე, მე ვთავაზობ, რომ ჩვენ შეიძლება უნდა გავაკეთოთ, რომ ამ გზით. 703 00:30:33,680 --> 00:30:35,225 ამიტომ, მე ვაპირებ ახლა უკვე ნომრები. 704 00:30:35,225 --> 00:30:38,190 ასე რომ, ჩვენ გავაგრძელებთ მარტივი და არა აუცილებლად გაიგო თვალსაზრისით ქაღალდის. 705 00:30:38,190 --> 00:30:40,220 უბრალოდ ნომრები, რომ ხალხს მიღებული. 706 00:30:40,220 --> 00:30:43,760 სიმძლავრე აპირებს, კიდევ ერთხელ, დაფიქსირება საერთო რაოდენობის ხალხი, რომ შეიძლება იყოს 707 00:30:43,760 --> 00:30:46,900 ამ ხაზის, როგორც სამი ან რაც არ უნდა სხვა ღირებულების. 708 00:30:46,900 --> 00:30:50,760 >> მაგრამ მე ვთავაზობ, რომ მე უნდა შეასრულოს სიმღერა არა მარტო ზომის 709 00:30:50,760 --> 00:30:52,370 მდგომ, რამდენი რამ არის მასში. 710 00:30:52,370 --> 00:30:56,310 ასე რომ, ზომა არის მიმდინარე ზომა, მოცულობა მაქსიმალური ზომის. 711 00:30:56,310 --> 00:30:58,540 უბრალოდ, კიდევ ერთხელ, ნომენკლატურა by კონვენციას. 712 00:30:58,540 --> 00:31:03,680 რატომაა დამატებითი int შიგნით საქართველოს მდგომ შენარჩუნება სიმღერა, თუ ვინ არის ამ 713 00:31:03,680 --> 00:31:05,365 წინ ხაზი? 714 00:31:05,365 --> 00:31:07,930 715 00:31:07,930 --> 00:31:10,910 რატომ უნდა გავაკეთოთ, რომ ამ შემთხვევაში? 716 00:31:10,910 --> 00:31:14,750 717 00:31:14,750 --> 00:31:16,190 >> ისე, როგორ არის ამ სურათში შეიცვლება? 718 00:31:16,190 --> 00:31:19,280 მე ალბათ reuse საუკეთესო ამ სურათს. 719 00:31:19,280 --> 00:31:21,480 ნება მომეცით წავიდეთ წინ და წაშლას რა აქ. 720 00:31:21,480 --> 00:31:24,580 ჩვენ მოგაწვდით ამ ოდნავ სხვა სახელი აქ. 721 00:31:24,580 --> 00:31:28,930 მოდით, თავი დაეღწია 17, მოდით, თავი დაეღწია საქართველოს 9, მოდით თავი დაეღწია 3. 722 00:31:28,930 --> 00:31:30,410 და მოდით დაამატოთ კიდევ ერთი რამ. 723 00:31:30,410 --> 00:31:34,710 მე ვთავაზობ, რომ მე უნდა შევინარჩუნოთ სიმღერა წინ სია, რომელიც მხოლოდ 724 00:31:34,710 --> 00:31:35,570 იქნება int ასევე. 725 00:31:35,570 --> 00:31:36,550 და ჩვენ ვაპირებთ, რომ შევინარჩუნოთ ის მარტივი. 726 00:31:36,550 --> 00:31:37,740 არ უკავშირდება სიაში ახლა. 727 00:31:37,740 --> 00:31:40,900 >> ჩვენ ამას ვაღიარებთ, რომ ჩვენ ვაპირებთ bump წინააღმდეგ ზომას. 728 00:31:40,900 --> 00:31:43,720 მაგრამ რას მსურს, რომ მოხდება ამ დროს? 729 00:31:43,720 --> 00:31:47,240 ამიტომ ვარაუდობენ, I წავიდეთ წინ და პირველი პირი მოდის ხაზი, და 730 00:31:47,240 --> 00:31:48,560 ეს რიცხვი 9. 731 00:31:48,560 --> 00:31:49,680 ჩვენ გვყავს სტრესი ბურთები. 732 00:31:49,680 --> 00:31:51,330 შემიძლია მოიპაროს, ვთქვათ, ორი ან სამი ადამიანი? 733 00:31:51,330 --> 00:31:52,690 ერთი, ორი, სამი? 734 00:31:52,690 --> 00:31:53,120 კარგით up. 735 00:31:53,120 --> 00:31:56,022 მარჯვნივ წინ, რადგან ჩვენ ეს ერთი სწრაფად. 736 00:31:56,022 --> 00:31:59,415 >> თითოეული თქვენგანი არის იქნება გულშემატკივართა ბიჭი ხაზის Apple. 737 00:31:59,415 --> 00:32:03,970 738 00:32:03,970 --> 00:32:06,210 თქვენ არ იქნება მიღების Apple ტექნიკის დასასრულს ამ თუმცა. 739 00:32:06,210 --> 00:32:06,500 ყველა უფლება. 740 00:32:06,500 --> 00:32:09,430 ასე რომ თქვენ ნომერი 9, თქვენ ნომერი 17, ნომერი 22. 741 00:32:09,430 --> 00:32:12,130 ეს არის უკანონო ციფრები, ისევე როგორც სტუდენტი პირადობის მოწმობა ან whatnot. 742 00:32:12,130 --> 00:32:14,550 ხოლო სულ ერთი წუთით, დავიწყოთ უნდა დაიწყოს დასძინა რამ. 743 00:32:14,550 --> 00:32:16,000 და მე აწარმოებს საბჭოს აქ ამ დროს. 744 00:32:16,000 --> 00:32:19,570 >> ასე რომ, ამ შემთხვევაში, მე ინიციალიზაცია წინ რომ იყოს - 745 00:32:19,570 --> 00:32:22,380 მე რეალურად ნამდვილად არ აღელვებს, თუ რა წინ არის, იმიტომ, რომ ზომა არის ნულოვანი. 746 00:32:22,380 --> 00:32:24,480 ასე რომ, ეს შესაძლოა, ასევე უბრალოდ იყოს კითხვის ნიშნის. 747 00:32:24,480 --> 00:32:26,170 ეს არის ყველა კითხვის ნიშნები. 748 00:32:26,170 --> 00:32:29,880 ასე რომ, ახლა ჩვენ დავიწყოთ რეალურად ვხედავ რაღაც ხალხის უგულებელყოფა up at მაღაზია. 749 00:32:29,880 --> 00:32:33,320 >> ასე რომ, თუ ნომერი 9, თქვენ პირველი იქ დილის 5 საათზე, წავიდეთ წინ და გამოდიან, 750 00:32:33,320 --> 00:32:34,210 ან ღამეს. 751 00:32:34,210 --> 00:32:34,580 OK. 752 00:32:34,580 --> 00:32:35,940 ასე რომ, ახლა 9 აქ არის. 753 00:32:35,940 --> 00:32:37,940 ასე რომ 9 არის წინ სიაში. 754 00:32:37,940 --> 00:32:41,440 ამიტომ, მე ვაპირებ წავიდეთ წინ და განახლება ზომა არსებული მონაცემების 755 00:32:41,440 --> 00:32:44,740 სტრუქტურა არ უნდა იყოს 0 აღარ, მაგრამ უნდა იყოს 1. 756 00:32:44,740 --> 00:32:47,630 მე ვაპირებ დააყენოს 9 საათზე წინ სიაში. 757 00:32:47,630 --> 00:32:51,020 ნება მომეცით წავიდეთ წინ და გადართვის ეკრანზე ასე რომ, ჩვენ ვხედავთ, წარსული გვაქვს. 758 00:32:51,020 --> 00:32:53,220 >> ახლა კი რა მინდა დააყენოს at წინ? 759 00:32:53,220 --> 00:32:56,240 მე ვაპირებ შენარჩუნება სიმღერა რომ წინ მდგომ ახლავე 760 00:32:56,240 --> 00:32:58,570 არის ადგილმდებარეობა 0. 761 00:32:58,570 --> 00:33:00,510 იმის გამო, რომ ის, რაც მომავალ მოხდება? 762 00:33:00,510 --> 00:33:03,000 ასევე, ვარაუდობენ, ახლა მე enqueue 17 ასევე. 763 00:33:03,000 --> 00:33:04,510 ასე რომ hop შეესაბამება არსებობს. 764 00:33:04,510 --> 00:33:07,060 ისევ და ისევ, ერთგვარი კარი მაღაზია იქნება აქ. 765 00:33:07,060 --> 00:33:08,700 ასე რომ, ახლა მე დასძინა 17. 766 00:33:08,700 --> 00:33:10,810 და მიუხედავად იმისა, ამ ბიჭებს ბლოკავს ეკრანზე, რომ კარგადაა, 767 00:33:10,810 --> 00:33:12,300 იმიტომ, რომ ჩვენ ვხედავთ მას აქ. 768 00:33:12,300 --> 00:33:12,910 ბოდიში. 769 00:33:12,910 --> 00:33:13,810 >> აუდიტორია: ჩვენ შეგვიძლია გადაადგილება - 770 00:33:13,810 --> 00:33:14,660 >> დავით Malan: არა, რომ კარგადაა. 771 00:33:14,660 --> 00:33:16,000 ძალიან დიდ აქ. 772 00:33:16,000 --> 00:33:18,580 ასე რომ 17 არის შიგნით მდგომ. 773 00:33:18,580 --> 00:33:21,332 მე უნდა განახლდეს, რაც სფეროებში არის, თუმცა? 774 00:33:21,332 --> 00:33:23,210 კარგი, აუცილებლად ზომა. 775 00:33:23,210 --> 00:33:26,430 და რა ჩაყენება? 776 00:33:26,430 --> 00:33:27,040 OK, არ. 777 00:33:27,040 --> 00:33:30,200 ფრონტის არ უნდა შეცვალოს, რადგან განსხვავებით დასტის, ჩვენ 778 00:33:30,200 --> 00:33:31,370 მინდა, რომ შევინარჩუნოთ სამართლიანობა. 779 00:33:31,370 --> 00:33:35,150 ასე რომ, თუ 9 წავიდა პირველი, ჩვენ გვინდა 9 როგორც პირველი გარეთ ხაზი 780 00:33:35,150 --> 00:33:36,420 და შევიდა მაღაზიაში. 781 00:33:36,420 --> 00:33:37,220 >> ფაქტობრივად, ვნახოთ, რომ. 782 00:33:37,220 --> 00:33:42,235 სანამ ჩვენ ჩადეთ 22, მოდით წავიდეთ წინ და dequeue 9. 783 00:33:42,235 --> 00:33:42,970 რა არის შენი სახელი ისევ? 784 00:33:42,970 --> 00:33:43,680 >> აუდიტორია: Jake. 785 00:33:43,680 --> 00:33:45,440 >> დავით Malan: Jake აპირებს უნდა dequeued არის. 786 00:33:45,440 --> 00:33:48,050 ასე რომ, თქვენ ფეხით შევიდა მაღაზიაში. 787 00:33:48,050 --> 00:33:49,880 და ვიტყვი, რომ მაღაზია არის იქ. 788 00:33:49,880 --> 00:33:51,970 ასე რომ, ახლა, რა სჭირდება - dit-dit-dit, 789 00:33:51,970 --> 00:33:53,400 რა უნდა მოხდეს ახლა? 790 00:33:53,400 --> 00:33:54,490 დიზაინი გადაწყვეტილება. 791 00:33:54,490 --> 00:33:56,825 ასე რომ, არა ცუდი ინსტიქტი, მაგრამ - რა არის შენი სახელი ისევ? 792 00:33:56,825 --> 00:33:57,090 >> აუდიტორია: დავით. 793 00:33:57,090 --> 00:33:57,500 >> დავით Malan: დავით. 794 00:33:57,500 --> 00:33:58,810 ასე რომ, რა დავით გაკეთება? 795 00:33:58,810 --> 00:34:02,590 იგი ცდილობდა სახის დაფიქსირება მონაცემები სტრუქტურა და გადაადგილება მისი ადგილსამყოფელი 796 00:34:02,590 --> 00:34:04,100 შევიდა Jake ყოფილი ადგილას. 797 00:34:04,100 --> 00:34:06,740 და ეს ჯარიმა, თუ ჩვენ სურვილი მიიღოს, რომ როგორც 798 00:34:06,740 --> 00:34:08,199 შესრულების დეტალურად. 799 00:34:08,199 --> 00:34:11,100 მაგრამ პირველი, მოდით განაახლოს მონაცემები სტრუქტურა სანამ ჩვენ გაგვაჩნია. 800 00:34:11,100 --> 00:34:14,139 იმის გამო, რომ მე არ liking იდეა ყველა ადამიანი გადავიდა ამ მხრივაც. 801 00:34:14,139 --> 00:34:17,360 >> ეს არ არის დიდი გარიგება თუ დავით აკეთებს იგი ერთი ნაბიჯია, მაგრამ კვლავ, ვფიქრობ, უკან 802 00:34:17,360 --> 00:34:20,360 როდესაც ჩვენ გვქონდა რვა მოხალისეები ეტაპზე და ჩვენ გავაკეთეთ, როგორიც ჩასაგდები 803 00:34:20,360 --> 00:34:22,600 დალაგების, სადაც ჩვენ მოუწია დაწყება მოძრავი ყველას გარშემო. 804 00:34:22,600 --> 00:34:23,790 ეს მივიღე ძვირი, არა? 805 00:34:23,790 --> 00:34:28,330 ეს მაიძულებს cringe შესახებ დიდი O საქართველოს N, დიდი ო ო Squared ერთხელ. 806 00:34:28,330 --> 00:34:30,650 ეს არ გრძნობს თავს, როგორიც არის იდეალური შედეგს. 807 00:34:30,650 --> 00:34:32,080 >> მოდით უბრალოდ განაახლოს ეს. 808 00:34:32,080 --> 00:34:35,120 ასე ზომის მდგომ აღარ არის 2. 809 00:34:35,120 --> 00:34:37,090 ეს ახლა უბრალოდ 1. 810 00:34:37,090 --> 00:34:40,360 მაგრამ მე ახლა განაახლებს რაღაც მე არ განაახლებს ადრე, 811 00:34:40,360 --> 00:34:41,130 წინ სიაში. 812 00:34:41,130 --> 00:34:45,420 მე ვერ, უბრალოდ ამბობენ, რომ ადგილმდებარეობის 1? 813 00:34:45,420 --> 00:34:49,770 ასე რომ, ახლა ჩვენ გვაქვს ნაგვის მნიშვნელობა, ნაგვის მნიშვნელობა, და დავითს 814 00:34:49,770 --> 00:34:51,469 შუა ამ ნაგავი. 815 00:34:51,469 --> 00:34:54,980 მაგრამ მონაცემთა სტრუქტურის ჯერ კიდევ უცვლელი. 816 00:34:54,980 --> 00:34:58,540 >> და სინამდვილეში, არც კი უნდა შეცვლის Jake ყოფილი ნომერი 817 00:34:58,540 --> 00:35:00,460 9, რადგან ახსოვს. 818 00:35:00,460 --> 00:35:04,470 მე მაქვს საკმარისი ინფორმაცია ახლა ზომა, რომელიც მე ვიცი თუმცა ერთი პირი 819 00:35:04,470 --> 00:35:05,030 ამ მდგომ. 820 00:35:05,030 --> 00:35:08,340 და ვიცი, რომ ეს პირი არის ადგილმდებარეობა 1, არ 0. 821 00:35:08,340 --> 00:35:09,760 არ ვგულისხმობ. 822 00:35:09,760 --> 00:35:11,300 ამგვარად 1 ასევე. 823 00:35:11,300 --> 00:35:13,410 ასე რომ, მონაცემთა სტრუქტურის მაინც OK. 824 00:35:13,410 --> 00:35:14,330 >> ისე, რა მოხდება შემდეგ? 825 00:35:14,330 --> 00:35:15,010 მოდით enqueue - 826 00:35:15,010 --> 00:35:15,370 რა არის შენი სახელი? 827 00:35:15,370 --> 00:35:16,160 >> აუდიტორია: Callen. 828 00:35:16,160 --> 00:35:16,580 >> დავით Malan: Callen. 829 00:35:16,580 --> 00:35:20,770 მოდით enqueue Callen და 22 ახლა მდგომ. 830 00:35:20,770 --> 00:35:22,300 ასე რომ, ახლა რა უნდა შეცვალოს აქ? 831 00:35:22,300 --> 00:35:24,380 ფრონტის არ აპირებს იცვლება, რა თქმა უნდა. 832 00:35:24,380 --> 00:35:27,160 ზომა აპირებს შეცვალოს იყოს 2 ერთხელ. 833 00:35:27,160 --> 00:35:31,590 ხოლო 22 მთავრდება აქ, 9 არის რჩება, მაგრამ ეფექტურად 834 00:35:31,590 --> 00:35:32,600 ნაგვის ღირებულება არის. 835 00:35:32,600 --> 00:35:35,910 უბრალოდ remnant of Jake წარსულში. 836 00:35:35,910 --> 00:35:39,200 >> ასე რომ, ახლა რა მოხდება თუ მე dequeue დავით? 837 00:35:39,200 --> 00:35:41,560 ერთი ბოლო ოპერაცია, dequeue დავით. 838 00:35:41,560 --> 00:35:46,070 ჩვენ ვერ გადაიტანოს, მაგრამ მე ვთავაზობ მოდით ამის გაკეთება, როგორც პატარა, როგორც ეს შესაძლებელია. 839 00:35:46,070 --> 00:35:50,280 ახლა ჩემი მონაცემთა სტრუქტურის მიდის უკან ზომა 2 დან 1. 840 00:35:50,280 --> 00:35:53,730 მაგრამ წინ მდგომ ახლა ხდება 2. 841 00:35:53,730 --> 00:35:56,640 მე არ უნდა შეცვალოს ამ ნომრებზე მხოლოდ ამჟამად, რადგან ისინი 842 00:35:56,640 --> 00:35:58,230 მხოლოდ ნაგვის ღირებულებებს. 843 00:35:58,230 --> 00:35:59,720 >> მაგრამ ახლა რა ხდება? 844 00:35:59,720 --> 00:36:03,280 დავუშვათ, მე enqueue თავს, 26? 845 00:36:03,280 --> 00:36:05,890 ვგრძნობ, როგორიც მე ეკუთვნის მეტი აქ. 846 00:36:05,890 --> 00:36:06,890 ასე რომ, მე მიმდინარეობს enqueued. 847 00:36:06,890 --> 00:36:08,760 ასე, რომ სახის ეკუთვნის აქ. 848 00:36:08,760 --> 00:36:11,300 და მიუხედავად იმისა, არა საკმაოდ ვაფასებთ ამ ვიზუალურად სცენაზე, 849 00:36:11,300 --> 00:36:15,075 იმიტომ რომ ჩვენ გვაქვს უამრავი ოთახი, მინდა არ შეიძლება ვდგავართ აქ, რატომ? 850 00:36:15,075 --> 00:36:16,290 >> აუდიტორია: თქვენ ფარგლებს გარეთ. 851 00:36:16,290 --> 00:36:16,370 >> დავით Malan: Right. 852 00:36:16,370 --> 00:36:16,940 მე ფარგლებს გარეთ. 853 00:36:16,940 --> 00:36:19,330 მე ინდექსირებული მიღმა ფარგლებში ამ მასივი. 854 00:36:19,330 --> 00:36:23,420 მე ნამდვილად უნდა იყოს ერთი სამი შესაძლო ადგილებში. 855 00:36:23,420 --> 00:36:25,150 ახლა, სად არის ყველაზე ბუნებრივი წასვლა? 856 00:36:25,150 --> 00:36:27,760 მე ვთავაზობ, ჩვენ leveraged კვირაში ერთი შეასრულა. 857 00:36:27,760 --> 00:36:30,150 თავდაცვის სამინისტროს ოპერატორი, პროცენტი. 858 00:36:30,150 --> 00:36:36,850 იმის გამო, რომ მე ტექნიკურად იდგა ადგილმდებარეობა 3, მაგრამ მე ნამდვილად 3 mod მოცულობა, 859 00:36:36,850 --> 00:36:40,250 ასე 3, პროცენტი ნიშანი, 3 - 860 00:36:40,250 --> 00:36:40,970 მოცულობა არის 3. 861 00:36:40,970 --> 00:36:41,720 რა არის ეს? 862 00:36:41,720 --> 00:36:43,700 რა არის დარჩენილი, როდესაც თქვენ დაყოფის 3 3? 863 00:36:43,700 --> 00:36:44,070 0. 864 00:36:44,070 --> 00:36:48,140 >> ასე რომ აყენებს მე იყო Jake იყო, რომელიც რეალურად კარგი. 865 00:36:48,140 --> 00:36:50,370 ასე რომ, ახლა განხორციელება ამ რამ აპირებს 866 00:36:50,370 --> 00:36:51,250 იყოს ცოტა თავის ტკივილი. 867 00:36:51,250 --> 00:36:53,740 ეს მართლაც მხოლოდ ერთი ხაზი საქართველოს თავის ტკივილი, საქართველოს კოდი. 868 00:36:53,740 --> 00:36:56,580 მაგრამ მაინც ახლა არის ნაგავი მნიშვნელობა, მაგრამ არსებობს ორი 869 00:36:56,580 --> 00:36:57,910 ლეგიტიმური ints აქ. 870 00:36:57,910 --> 00:37:04,160 და მე აცხადებენ, რომ ახლა ჩვენ გავაკეთეთ ზუსტად ის, რაც ჩვენ უნდა გავაკეთოთ ისე, სანამ 871 00:37:04,160 --> 00:37:08,600 შევცვლით იმას, რაც Jake-ს ღირებულება იყო, რომ 26. 872 00:37:08,600 --> 00:37:12,110 >> ახლა ჩვენ გვაქვს საკმარისი ინფორმაცია ჯერ კიდევ ერთიანობის შენარჩუნებას 873 00:37:12,110 --> 00:37:13,060 ამ მონაცემების სტრუქტურას. 874 00:37:13,060 --> 00:37:17,160 ჩვენ ჯერ კიდევ სახის out of luck როდესაც ჩვენ გვინდა ჩადეთ ოთხი და მეტი საერთო 875 00:37:17,160 --> 00:37:20,740 ელემენტები, მაგრამ შემიძლია, სულ მცირე, მიიღოს საკმაოდ ეფექტიანი გამოყენების კონსტანტის 876 00:37:20,740 --> 00:37:21,740 დრო, ფაქტობრივად. 877 00:37:21,740 --> 00:37:27,150 მე არ მაქვს ფიქრი გადავიდა ყველას, როგორც დავითის მიდრეკილება იყო. 878 00:37:27,150 --> 00:37:30,816 >> ნებისმიერი შეკითხვა stacks, ან ამ მდგომ? 879 00:37:30,816 --> 00:37:32,184 >> აუდიტორია: არის მიზეზი იმისა, გჭირდებათ ზომა ასე რომ თქვენ იცით 880 00:37:32,184 --> 00:37:34,010 სად უნდა ჰქონდეს პირი? 881 00:37:34,010 --> 00:37:34,770 >> დავით Malan: ზუსტად. 882 00:37:34,770 --> 00:37:38,230 მე უნდა იცოდეს ზომის მასივი იმიტომ, რომ მე უნდა იცოდეს, თუ რამდენად 883 00:37:38,230 --> 00:37:41,940 ბევრი ეს ფასეულობები ლეგიტიმური, და რომ ვიპოვი, სად უნდა დააყენოს 884 00:37:41,940 --> 00:37:42,800 მომდევნო. 885 00:37:42,800 --> 00:37:43,300 ზუსტად. 886 00:37:43,300 --> 00:37:44,580 ზომა არის - 887 00:37:44,580 --> 00:37:46,360 რეალურად, ჩვენ არ განაახლოს ეს არის. 888 00:37:46,360 --> 00:37:48,380 მე დასძინა თავს ზე 26. 889 00:37:48,380 --> 00:37:51,760 ზომა არის, არა 1, არამედ 2. 890 00:37:51,760 --> 00:37:57,780 ასე რომ, ახლა ამ მართლაც მეხმარება იპოვოს ხელმძღვანელი სია, რომელიც არ არის 0, არ 891 00:37:57,780 --> 00:37:59,250 1, მაგრამ 2. 892 00:37:59,250 --> 00:38:01,665 წინ სია მართლაც ნომერი 22. 893 00:38:01,665 --> 00:38:05,120 იმის გამო, რომ იგი პირველი, ამიტომ იგი უნდა უნდა უშვებდნენ მაღაზია ჩემს წინაშე, 894 00:38:05,120 --> 00:38:08,780 მიუხედავად იმისა, რომ ვიზუალურად მე დგანან უფრო ახლოს მაღაზია. 895 00:38:08,780 --> 00:38:09,220 >> ყველა უფლება? 896 00:38:09,220 --> 00:38:12,410 რაუნდი ტაში ამ ბიჭებს და ჩვენ მისცეს მათ გარეთ არსებობს. 897 00:38:12,410 --> 00:38:17,090 >> [ტაში] 898 00:38:17,090 --> 00:38:18,150 >> დავით Malan: მე ვერ დავუშვებთ თქვენ გაქვთ პანელში. 899 00:38:18,150 --> 00:38:20,760 ჩვენ ვერ ვხედავთ, თუ რა მოხდება, თუ გსურთ, მაგრამ იქნებ არა. 900 00:38:20,760 --> 00:38:21,590 ყველა უფლება. 901 00:38:21,590 --> 00:38:25,380 ასე რომ, ის, რაც ახლა აკეთებს, რომ დაგვტოვებთ? 902 00:38:25,380 --> 00:38:28,900 ისე, მინდა შესთავაზოს, რომ არსებობს რამდენიმე სხვა მონაცემები სტრუქტურების შეგვეძლო 903 00:38:28,900 --> 00:38:33,810 დაიწყება და დასძინა, რომ ჩვენი ინსტრუმენტი ნაკრები, რომლებიც რეალურად, საკმაოდ, საკმაოდ აქტუალურია, როგორც 904 00:38:33,810 --> 00:38:35,270 ჩვენ dive შევიდა ვებგვერდი პერსონალი. 905 00:38:35,270 --> 00:38:38,150 რაც კიდევ ერთხელ, რაღაც სახის კავშირი ხეები სახით 906 00:38:38,150 --> 00:38:40,550 რაღაც მოუწოდა DOM, დოკუმენტი ობიექტის მოდელი. 907 00:38:40,550 --> 00:38:42,370 მაგრამ ჩვენ დავინახავთ მეტი ისიც აღნიშნა, რომ ხანგრძლივი. 908 00:38:42,370 --> 00:38:46,260 >> ნება მომეცით შესთავაზოს definitionally, რომ ჩვენ მოვუწოდებთ ხე ეხლა მოგეხსენებათ, როგორც 909 00:38:46,260 --> 00:38:48,820 მეტი ოჯახის ხე, სადაც თქვენ გარკვეული წინაპრების ზე 910 00:38:48,820 --> 00:38:49,790 ფესვები ხე. 911 00:38:49,790 --> 00:38:54,480 პატრიარქალურ ან matriarch ზე ძალიან თავზე ხე. 912 00:38:54,480 --> 00:38:56,700 მათ გარეშე მეუღლე, ამ შემთხვევაში. 913 00:38:56,700 --> 00:39:00,940 მაგრამ ჩვენ ახლა აქვს, რაც ჩვენ ამას დავარქმევთ ბავშვები, რომლებიც კვანძების, რომ დაკიდება 914 00:39:00,940 --> 00:39:05,480 off მარცხენა ბავშვის ან უფლება ბავშვი, ისარი როგორც გამოსახული აქ. 915 00:39:05,480 --> 00:39:10,490 >> სხვა სიტყვებით,, ხის მონაცემთა სტრუქტურის კომპიუტერული, ხე ნულოვანი 916 00:39:10,490 --> 00:39:11,480 ან მეტი კვანძების. 917 00:39:11,480 --> 00:39:13,500 თუ მას აქვს მინიმუმ ერთი კვანძის, რომ ე.წ. root. 918 00:39:13,500 --> 00:39:15,700 ეს რამ ვიზუალურად, რომ ჩვენ მიაპყროს ზედა. 919 00:39:15,700 --> 00:39:20,280 და ეს კვანძი, ისევე როგორც სხვა ნებისმიერი კვანძის, შეიძლება ნულოვანი, ერთი, ან ორი, ან სამი, 920 00:39:20,280 --> 00:39:23,600 ან თუმცა ბევრი ბავშვი მონაცემთა სტრუქტურის უჭერს მხარს. 921 00:39:23,600 --> 00:39:29,150 ამ შემთხვევაში, ძირი, შენახვისა ღირებულება ერთ და ორი შვილი, 2 და 3, 922 00:39:29,150 --> 00:39:33,020 ასე რომ, ჩვენ ზოგადად მოვუწოდებთ 2 მარცხენა ბავშვი და 3 უფლება შვილი. 923 00:39:33,020 --> 00:39:36,940 >> და მაშინ, როდესაც მივიღებთ ქვემოთ 5, 6, და 7, 6, შესაძლოა ეწოდოს შუა შვილი. 924 00:39:36,940 --> 00:39:38,940 თუ თქვენ გაქვთ ოთხი შვილი, იგი იღებს გაუგებარია. 925 00:39:38,940 --> 00:39:42,260 ასე რომ, ჩვენ შეწყვიტოს გამოყენებით, ასეთი საქართველოს მალსახმობი სიტყვიერი შეურაცხყოფა. 926 00:39:42,260 --> 00:39:44,580 მაგრამ ეს მართლაც მხოლოდ ოჯახის ხე. 927 00:39:44,580 --> 00:39:48,880 და ფოთლები აქ კვანძების, რომ თავად არ მყავს ბავშვები. 928 00:39:48,880 --> 00:39:52,540 მათ დაკიდება off ბოლოში ხე. 929 00:39:52,540 --> 00:39:56,940 >> ასე რომ, როგორ შეიძლება ჩვენ განახორციელოს ხე, ახლახანს ორი შვილი მაქსიმალურად? 930 00:39:56,940 --> 00:39:58,410 ჩვენ ამას ეძახით ორობითი ხე. 931 00:39:58,410 --> 00:40:00,960 ბი ერთხელ რაც იმას ნიშნავს, ორი, ამ შემთხვევაში, ისევე, როგორც ორობითი. 932 00:40:00,960 --> 00:40:04,830 ასე რომ მას შეუძლია ნულოვანი, ერთი, ან ორი შვილი მაქსიმალურად. 933 00:40:04,830 --> 00:40:08,650 >> მე შესთავაზოს, რომ ჩვენ განახორციელოს კვანძის რომ სტრუქტურის int n, 934 00:40:08,650 --> 00:40:11,910 და შემდეგ ორი მითითებას, ერთი მოუწოდა დატოვა, ერთი მოუწოდა უფლება. 935 00:40:11,910 --> 00:40:14,830 მაგრამ ეს მხოლოდ ლამაზი თვითნებური კონვენციები. 936 00:40:14,830 --> 00:40:18,170 და რა ლამაზი არის, განსაკუთრებით თუ სახის იბრძოდა კონცეპტუალურად ერთად 937 00:40:18,170 --> 00:40:21,300 უკან, ან ეგონა, რომ ეს არ იყო ნამდვილად გამოსავალი არაფერი, 938 00:40:21,300 --> 00:40:23,120 მით უმეტეს, თუ შეიძლება ამოიწურა მეხსიერება. 939 00:40:23,120 --> 00:40:26,600 ახლა, როდესაც ჩვენ ვსაუბრობთ მონაცემები სტრუქტურები და ალგორითმები, რომელიც საშუალებას 940 00:40:26,600 --> 00:40:31,030 us to traverse და მანიპულირება მათ, გამოდის, რომ უკან ბრუნდება წელს 941 00:40:31,030 --> 00:40:34,240 ბევრად უფრო მყარი თუ არ ლამაზი გზა. 942 00:40:34,240 --> 00:40:38,670 >> ასე რომ, ეს მე ვთავაზობ არის განხორციელება საქართველოს ძებნის ფუნქცია. 943 00:40:38,670 --> 00:40:39,870 იმის გათვალისწინებით, ორ საშუალებებით - 944 00:40:39,870 --> 00:40:41,570 ასე ვფიქრობ, როგორც შავი ყუთი. 945 00:40:41,570 --> 00:40:46,560 იმის გათვალისწინებით, ორ საშუალებებით, n, int, და მომცეთ ხე, მომცეთ 946 00:40:46,560 --> 00:40:50,020 კვანძის, ან მართლაც ძირი ხე, I აცხადებენ, რომ ამ ფუნქციას შეუძლია დაბრუნდეს 947 00:40:50,020 --> 00:40:53,530 ჭეშმარიტი ან ცრუ, რომ ღირებულება ო არის შიგნით ამ ხე. 948 00:40:53,530 --> 00:40:55,210 >> რა არის შიგნით ამ შავი ყუთი? 949 00:40:55,210 --> 00:40:57,440 ასევე, ოთხ ფილიალს. 950 00:40:57,440 --> 00:40:58,385 პირველი უბრალოდ ამოწმებს. 951 00:40:58,385 --> 00:41:00,490 თუ ხე null, დააბრუნებს false. 952 00:41:00,490 --> 00:41:04,580 თუ არ არსებობს კვანძის, არ არსებობს n, არ არსებობს ნომერი, დააბრუნებს false. 953 00:41:04,580 --> 00:41:12,330 თუ იმისა, N, ღირებულება ვეძებთ ამისთვის, ნაკლებია, ვიდრე ხე arrow n, და 954 00:41:12,330 --> 00:41:15,180 უბრალოდ უნდა იყოს მკაფიო, რას ნიშნავს, როდესაც ვწერ ხე და შემდეგ arrow 955 00:41:15,180 --> 00:41:18,150 notation, ო? 956 00:41:18,150 --> 00:41:18,690 ზუსტად. 957 00:41:18,690 --> 00:41:21,970 ეს იმას ნიშნავს, რომ dereference მაჩვენებელი მოუწოდა ხე. 958 00:41:21,970 --> 00:41:26,750 წავალთ, და შემდეგ მიიღოს შიგნით რომ კვანძის და მიიღეთ თავისი სფეროს მოუწოდა ო. 959 00:41:26,750 --> 00:41:30,810 და მაშინ შედარების ფაქტობრივი ო რომ იყო გადავიდა ძებნა წინააღმდეგ. 960 00:41:30,810 --> 00:41:35,390 >> ასე რომ, თუ n ნაკლებია, ვიდრე, ო ღირებულება in tree კვანძის თავად, ასევე, 961 00:41:35,390 --> 00:41:36,720 რას ნიშნავს ეს? 962 00:41:36,720 --> 00:41:40,690 ეს იმას ნიშნავს, არაფერი ერთი შეხედვით. 963 00:41:40,690 --> 00:41:40,900 არა? 964 00:41:40,900 --> 00:41:45,560 ისევე, როდესაც თქვენ მასივი ღირებულებები, თქვენ ალბათ მინდა ვრცელდება ორობითი 965 00:41:45,560 --> 00:41:48,290 ძებნის სახით გათიშე და დაპყრობას. 966 00:41:48,290 --> 00:41:51,790 მაგრამ რა ვარაუდი, არც ჩვენ უნდა გააკეთოს ბინარული ძებნის მუშაობს 967 00:41:51,790 --> 00:41:54,510 ამ სატელეფონო წიგნი და ადრე მაგალითები? 968 00:41:54,510 --> 00:41:55,530 >> როგორ იყოს დახარისხებული. 969 00:41:55,530 --> 00:41:59,490 მოდით დახვეწა განსაზღვრება ხე აქ არ უნდა იყოს მხოლოდ ხე, რომელიც შეიძლება 970 00:41:59,490 --> 00:42:00,880 აქვს ნებისმიერი რაოდენობის შვილი. 971 00:42:00,880 --> 00:42:04,700 არა მხოლოდ ორობითი ხე, რომელიც შეიძლება აქვს 0, 1, ან 2 მაქსიმალურად. 972 00:42:04,700 --> 00:42:09,700 მაგრამ, როგორც ბინარული ძებნის ხე, ან BST, რაც არის ლამაზი გზა ამბობდა 973 00:42:09,700 --> 00:42:15,430 binary tree ისეთი, რომ ყველა კვანძის ნახვა მარცხენა ბავშვის ამჟამად, არის 974 00:42:15,430 --> 00:42:16,830 ნაკლებია, ვიდრე კვანძის. 975 00:42:16,830 --> 00:42:20,170 და ყველა კვანძის უფლება ბავშვი, თუ დღემდე, უფრო 976 00:42:20,170 --> 00:42:21,740 ვიდრე კვანძის თავად. 977 00:42:21,740 --> 00:42:25,200 >> ასე რომ, სხვა სიტყვებით, თუ იყო მიაპყროს ხე out, ყველა ნომრები 978 00:42:25,200 --> 00:42:30,620 ყურადღებით დაბალანსებული მოსწონს ეს ასე, რომ თუ თქვენ გაქვთ 55 როგორც root, 33 შეიძლება 979 00:42:30,620 --> 00:42:33,090 მისი მარცხენა იმიტომ, რომ ნაკლები 55. 980 00:42:33,090 --> 00:42:36,430 77, მივიდეს მისი უფლება, რადგან ეს უფრო მეტია, ვიდრე 55. 981 00:42:36,430 --> 00:42:40,750 მაგრამ ახლა შეამჩნია, იგივე განმარტება, ეს რეკურსიული განმარტება სიტყვიერი, 982 00:42:40,750 --> 00:42:42,600 უნდა მიმართონ 33. 983 00:42:42,600 --> 00:42:47,610 33 მარცხენა ბავშვის ნაკლები უნდა იყოს იგი, და 33 მარჯვენა შვილი, 44 წლის, უნდა იყოს 984 00:42:47,610 --> 00:42:48,580 აღემატება მას. 985 00:42:48,580 --> 00:42:51,670 >> ასე რომ, ეს ორობითი ძებნის ხე, მე ვთავაზობ, გამოყენებით ცოტა 986 00:42:51,670 --> 00:42:53,910 უკან, ჩვენ შეგვიძლია ახლა მოვძებნოთ ო. 987 00:42:53,910 --> 00:42:59,160 ასე რომ, თუ n ნაკლებია, ვიდრე ღირებულება ო, რომ მიმდინარე კვანძის, მე ვაპირებ წასვლა 988 00:42:59,160 --> 00:43:04,090 წინ და punt, ასე ვთქვათ, და მხოლოდ დაბრუნების მიუხედავად პასუხი of 989 00:43:04,090 --> 00:43:08,470 ეძებს ო on ხე მარცხენა შვილი. 990 00:43:08,470 --> 00:43:11,370 გავითვალისწინოთ, კიდევ ერთხელ, ამ ფუნქციის მხოლოდ ელოდება კვანძის ვარსკვლავი, 991 00:43:11,370 --> 00:43:12,780 მომცეთ კვანძის. 992 00:43:12,780 --> 00:43:17,360 ასე რომ აუცილებლად შემიძლია მხოლოდ ამის გაკეთება ხე arrow მარცხენა, რაც გამოიწვევს 993 00:43:17,360 --> 00:43:18,400 ჩემთვის კიდევ ერთი კვანძის. 994 00:43:18,400 --> 00:43:19,480 მაგრამ რა არის ის, რომ კვანძის? 995 00:43:19,480 --> 00:43:22,820 >> ასევე, აღნიშნული დეკლარაცია, მარცხენა არის მხოლოდ მაჩვენებელი, ისე, რომ მხოლოდ 996 00:43:22,820 --> 00:43:27,090 ნიშნავს მე გავლით რომ ძებნის ფუნქცია სხვადასხვა მაჩვენებელი, კერძოდ 997 00:43:27,090 --> 00:43:30,750 ერთი, რომელიც წარმოადგენს ჩემი მარცხენა ბავშვის ხე. 998 00:43:30,750 --> 00:43:36,040 ასე რომ, ამ შემთხვევაში, მომცეთ 33, თუ ეს არის ჩვენი ნიმუში შეტანის იმავდროულად, თუ 999 00:43:36,040 --> 00:43:40,740 ო მეტია ღირებულება n ზე მიმდინარე კვანძის in ხე, მაშინ მე 1000 00:43:40,740 --> 00:43:43,370 აპირებთ წავიდეთ წინ და punt სხვა მიმართულებით და უბრალოდ ამბობენ, მე არ 1001 00:43:43,370 --> 00:43:47,280 ვიცი, თუ ამ მნიშვნელობის N არის ხე, მაგრამ მე ვიცი, თუ ეს არის, ეს არის ქვემოთ ჩემს 1002 00:43:47,280 --> 00:43:49,090 მარჯვენა ფილიალი, ასე ვთქვათ. 1003 00:43:49,090 --> 00:43:53,120 ასე რომ, მინდა გითხრათ, რეკურსიული მოძებნოს, გავლის ო ერთხელ, მაგრამ გადადის 1004 00:43:53,120 --> 00:43:54,580 მომცეთ ჩემი უფლება შვილი. 1005 00:43:54,580 --> 00:44:00,020 >> სხვა სიტყვებით, თუ ვარ ამჟამად 55 და მე ვეძებ 99, მე ვიცი, რომ 99 1006 00:44:00,020 --> 00:44:04,270 მეტია 55, ასე რომ, ისევე, როგორც მე დახიეს სატელეფონო წიგნი კვირის წინ და ჩვენ 1007 00:44:04,270 --> 00:44:07,140 წავიდა, ისევე ვართ ჩვენ აპირებს წავიდეს უფლება აქ. 1008 00:44:07,140 --> 00:44:11,960 და მე არ ვიცი, თუ ეს ჩემს უფლება ბავშვი, და ეს არ არის, 77 არის, მაგრამ 1009 00:44:11,960 --> 00:44:13,210 მე ვიცი, რომ ამ მიმართულებით. 1010 00:44:13,210 --> 00:44:18,770 ამიტომ, მე მოვუწოდებ ძებნა ჩემი უფლება ბავშვი, 77, და ნება ძებნის ფიგურა out from 1011 00:44:18,770 --> 00:44:24,950 არსებობს თუ 99 ამ თვითნებური მაგალითად, ფაქტობრივად, არ არსებობს. 1012 00:44:24,950 --> 00:44:26,900 >> სხვაგან, რა საბოლოო შემთხვევაში? 1013 00:44:26,900 --> 00:44:28,620 თუ ხე null არის ერთ შემთხვევაში. 1014 00:44:28,620 --> 00:44:31,890 თუ n ნაკლებია, ვიდრე მიმდინარე კვანძის ნახვა ღირებულება არის კიდევ ერთი შემთხვევა. 1015 00:44:31,890 --> 00:44:35,120 თუ n მეტია მიმდინარე კვანძის ღირებულების არის მესამე შემთხვევაში. 1016 00:44:35,120 --> 00:44:38,250 რა არის მეოთხე და საბოლოო შემთხვევაში? 1017 00:44:38,250 --> 00:44:39,480 მე ვფიქრობ, ჩვენ გარეთ შემთხვევებში, არა? 1018 00:44:39,480 --> 00:44:44,690 ეს უნდა იყოს რომ n in მიმდინარე კვანძის, რომ მე სხვა. 1019 00:44:44,690 --> 00:44:49,640 >> ასე რომ, თუ მე ეძებს 55 ამ ეტაპზე ამბავი, რომ ფილიალი 1020 00:44:49,640 --> 00:44:51,780 ხე დაბრუნდნენ მართალია. 1021 00:44:51,780 --> 00:44:55,380 რა არის საინტერესო ისაა, რომ ჩვენ რეალურად, განსხვავებით კვირის წარსულში, ჩვენ ტიპის 1022 00:44:55,380 --> 00:44:56,740 საქართველოს აქვს ორი ბაზა შემთხვევაში. 1023 00:44:56,740 --> 00:44:58,300 და ისინი არ უნდა იყოს ყველა ზედა. 1024 00:44:58,300 --> 00:45:01,390 რა არის ბაზა შემთხვევაში, რადგან თუ ხე null, იქ არაფერი უნდა გააკეთოს. 1025 00:45:01,390 --> 00:45:03,410 უბრალოდ დაბრუნების მყარი კოდირებული ღირებულება ყალბი. 1026 00:45:03,410 --> 00:45:07,400 >> ქვედა ფილიალი სახის ჩვეულებრივ, რომლის მიხედვითაც, თუ ჩვენ შემოწმდება 1027 00:45:07,400 --> 00:45:11,550 null ჩვენ შეამოწმა, თუ ეს უნდა იყოს წავიდა, მაგრამ ეს არ უნდა იყოს, ჩვენ 1028 00:45:11,550 --> 00:45:14,640 შემოწმდება თუ ის უნდა იყო მართალი, მაგრამ ეს არ უნდა იყოს, ნათლად უნდა იყოს 1029 00:45:14,640 --> 00:45:15,870 უფლება, სადაც ჩვენ ვართ. 1030 00:45:15,870 --> 00:45:16,780 სწორედ ბაზის შემთხვევაში. 1031 00:45:16,780 --> 00:45:19,920 ასე რომ ორი რეკურსიული შემთხვევებში sandwiched იქ ცენტრიდან. 1032 00:45:19,920 --> 00:45:21,630 მაგრამ მე ვერ დავწერე ამ გარეშე. 1033 00:45:21,630 --> 00:45:24,520 უბრალოდ ეგონა, რომ ეს ერთგვარი იგრძნო ბუნებრივი პირველ შემოწმება შესაძლებელია შეცდომა, 1034 00:45:24,520 --> 00:45:28,340 მონიშნეთ დატოვა, მონიშნეთ უფლება, მაშინ ვარაუდობენ, რომ თქვენ იმ კვანძის 1035 00:45:28,340 --> 00:45:30,630 თქვენ რეალურად ეძებენ. 1036 00:45:30,630 --> 00:45:36,240 >> რატომ შეიძლება ეს იყოს სასარგებლო? 1037 00:45:36,240 --> 00:45:37,910 გამოდის, - 1038 00:45:37,910 --> 00:45:42,110 და ნება მომეცით გადასვლა teaser აქ არის ამ ინტერნეტში. 1039 00:45:42,110 --> 00:45:44,920 ჩვენ ვაპირებთ დაიწყება გამოყენებით არ პროგრამირების ენა, პირველ რიგში, მაგრამ 1040 00:45:44,920 --> 00:45:46,030 markup ენაზე. 1041 00:45:46,030 --> 00:45:48,740 Markup ენის ერთ, რომ მსგავსი სულითა პროგრამირების 1042 00:45:48,740 --> 00:45:51,715 ენა, მაგრამ ეს არ გაძლევთ უნარი გამოხატონ საკუთარი თავის ლოგიკურად. 1043 00:45:51,715 --> 00:45:55,070 ეს მხოლოდ გაძლევთ უნარი გამოხატონ საკუთარი თავის სტრუქტურულად. 1044 00:45:55,070 --> 00:45:57,960 >> სად გსურთ დააყენა რაღაც გვერდზე, ვებ გვერდზე? 1045 00:45:57,960 --> 00:45:59,200 რა ფერის გინდათ, რათა ის? 1046 00:45:59,200 --> 00:46:00,950 რა შრიფტი გნებავთ, რათა ის? 1047 00:46:00,950 --> 00:46:02,970 რა სიტყვა გააკეთებს რეალურად მინდა ვებ გვერდზე? 1048 00:46:02,970 --> 00:46:04,060 ასე რომ, markup ენაზე. 1049 00:46:04,060 --> 00:46:07,690 მაგრამ ჩვენ ძალიან სწრაფად დანერგვა JavaScript, რომელიც სრულფასოვანი 1050 00:46:07,690 --> 00:46:08,560 პროგრამირების ენაზე. 1051 00:46:08,560 --> 00:46:12,530 მსგავსი syntactically გამოჩენა to C, მაგრამ ეს თქვენ გარკვეული 1052 00:46:12,530 --> 00:46:15,200 ლამაზი, უფრო ძლიერი, უფრო მომხმარებლის მეგობრული ფუნქციები. 1053 00:46:15,200 --> 00:46:18,050 >> ხოლო ერთი იმედგაცრუებები, ამ წერტილი სემესტრის რომ ჩვენ 1054 00:46:18,050 --> 00:46:22,065 მალე განახორციელოს speller გაცილებით ნაკლები ხაზი კოდი გამოყენებით სხვა ენებზე 1055 00:46:22,065 --> 00:46:25,580 ვიდრე C თავად საშუალებას, არამედ მიზეზი ნახვა ჩვენ მალე მესმის. 1056 00:46:25,580 --> 00:46:27,750 ეს იქნება პირველი ასეთი ვებ გვერდზე. 1057 00:46:27,750 --> 00:46:30,120 ეს იქნება სრულიად underwhelming, პირველი მოგვცემს. 1058 00:46:30,120 --> 00:46:31,400 ეს იქნება უბრალოდ, Hello World. 1059 00:46:31,400 --> 00:46:34,010 მაგრამ თუ მინახავს იგი ადრე, ეს არის HTML, 1060 00:46:34,010 --> 00:46:35,670 ჰიპერტექსტის მარკირებას ენა. 1061 00:46:35,670 --> 00:46:39,310 >> თუ გარკვეული მენიუს ვარიანტი ყველაზე ნებისმიერი ბრაუზერი, ნებისმიერ ვებ გვერდზე on 1062 00:46:39,310 --> 00:46:43,160 ინტერნეტით, ხედავთ HTML რომ ზოგიერთი ადამიანი მისწერა 1063 00:46:43,160 --> 00:46:44,400 შექმნა, რომ ვებ გვერდზე. 1064 00:46:44,400 --> 00:46:47,850 და ეს, ალბათ, არ გამოიყურება, როგორც მოკლე ან როგორც გარღვევა, როგორც ეს. 1065 00:46:47,850 --> 00:46:51,400 მაგრამ ეს მოჰყვება ნიმუში ამ ღია კრონშტეინები და დახრილ ხაზებს და 1066 00:46:51,400 --> 00:46:53,660 წერილები და პოტენციურად ნომრები. 1067 00:46:53,660 --> 00:46:56,770 >> მეგონა, მე მინდა გადმოგცეთ teaser თუ რა თქვენ ვერ გააკეთებს 1068 00:46:56,770 --> 00:46:57,950 მიღების შემდეგ CS50. 1069 00:46:57,950 --> 00:47:02,620 ნება მომეცით წასვლა cs.harvard.edu / ძარცვა, ჩვენი საკუთარი Rob Bowden-ს მთავარ გვერდზე. 1070 00:47:02,620 --> 00:47:06,080 ამის შესახებ მან ჩვენთვის. 1071 00:47:06,080 --> 00:47:07,490 ასე რომ მალე შეძლებს გაგვაჩნია. 1072 00:47:07,490 --> 00:47:10,660 ასევე, რა მოისმინა დღეს დილით - 1073 00:47:10,660 --> 00:47:12,480 რა გსმენიათ ამ დილით - 1074 00:47:12,480 --> 00:47:13,780 >> [Hamster საცეკვაო მუსიკა] 1075 00:47:13,780 --> 00:47:15,702 >> - You'll შეძლებს, რათა ეს. 1076 00:47:15,702 --> 00:47:16,790 ეს გველოდება ოთხშაბათს. 1077 00:47:16,790 --> 00:47:17,791 ჩვენ ვნახავთ მაშინ. 1078 00:47:17,791 --> 00:47:22,950 >> [Hamster საცეკვაო მუსიკა] 1079 00:47:22,950 --> 00:47:24,300 დავით Malan: მომდევნო CS50 - 1080 00:47:24,300 --> 00:47:31,670