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