1 00:00:00,000 --> 00:00:08,532 >> [მუსიკის დაკვრა] 2 00:00:08,532 --> 00:00:12,060 >> Zamyla CHAN: პირველი, რაც თქვენ შესაძლოა ცნობა იმის შესახებ, იპოვოს ის არის, რომ ჩვენ უკვე 3 00:00:12,060 --> 00:00:13,450 არ კოდი დაწერილი ჩვენთვის. 4 00:00:13,450 --> 00:00:15,160 ამ ეწოდება განაწილების კოდი. 5 00:00:15,160 --> 00:00:18,000 ასე რომ, ჩვენ არა მხოლოდ წერილობით საკუთარი კოდექსის ნულიდან უქმნით. 6 00:00:18,000 --> 00:00:22,800 პირიქით, ჩვენ შევსების voids ზოგიერთ წინასწარ არსებული კოდი. 7 00:00:22,800 --> 00:00:27,790 >> Find.c პროგრამა მოთხოვნა ნომრები შევსება haystack, ეძებს 8 00:00:27,790 --> 00:00:32,189 haystack განთავსების შესახებ წარმოდგენილი ნემსი, და ამას დარეკვით სახის და 9 00:00:32,189 --> 00:00:35,590 ძიების, განსაზღვრული ფუნქციების in helpers.c. 10 00:00:35,590 --> 00:00:37,670 ასე find.c წერია უკვე. 11 00:00:37,670 --> 00:00:40,770 თქვენი სამუშაო დაწერა დამხმარე. 12 00:00:40,770 --> 00:00:41,870 >> ასე რომ, რას ვაკეთებთ? 13 00:00:41,870 --> 00:00:44,210 ჩვენ ახორციელებს ორი ფუნქცია. 14 00:00:44,210 --> 00:00:49,030 ძებნა, რომელიც ბრუნდება ნამდვილი თუ ღირებულება გვხვდება haystack, დაბრუნების 15 00:00:49,030 --> 00:00:51,370 ცრუ თუ ღირებულება არის არ haystack. 16 00:00:51,370 --> 00:00:57,990 და მაშინ ჩვენ, ასევე, ახორციელებს ერთგვარი რომელიც ახარისხებს მასივი მოუწოდა ღირებულებებს. 17 00:00:57,990 --> 00:00:59,960 >> მოდით დაძლევის ძებნა. 18 00:00:59,960 --> 00:01:04,560 ძიება ამჟამად ხორციელდება როგორც ხაზოვანი ძებნა, მაგრამ შეგიძლიათ ამის გაკეთება ბევრად 19 00:01:04,560 --> 00:01:05,550 უკეთესად რომ. 20 00:01:05,550 --> 00:01:09,910 ხაზოვანი ძებნა ხორციელდება O of n დრო, რომელიც საკმაოდ ნელა. 21 00:01:09,910 --> 00:01:13,850 თუმცა, შეგიძლიათ მოძებნოთ ნებისმიერი სია გადაეცა იგი. 22 00:01:13,850 --> 00:01:20,130 თქვენი სამუშაო განახორციელოს ორობითი ძებნა, რომელიც აწარმოებს დრო O of log n. 23 00:01:20,130 --> 00:01:21,130 ეს არის საკმაოდ სწრაფი. 24 00:01:21,130 --> 00:01:23,170 >> მაგრამ არსებობს განაპირობებს. 25 00:01:23,170 --> 00:01:27,600 ორობითი ძებნა შესაძლებელია მხოლოდ ძებნა მეშვეობით წინასწარ დახარისხებული სიები. 26 00:01:27,600 --> 00:01:30,370 რატომ არის, რომ? 27 00:01:30,370 --> 00:01:32,620 >> კარგად მოდით შევხედოთ მაგალითს. 28 00:01:32,620 --> 00:01:36,280 მოცემული მასივი ღირებულებები, haystack, ჩვენ ვაპირებთ იყოს ეძებს 29 00:01:36,280 --> 00:01:37,130 განთავსების ნემსი. 30 00:01:37,130 --> 00:01:40,460 და ამ მაგალითად, რიცხვი სამი. 31 00:01:40,460 --> 00:01:44,130 ისე, რომ ბინარული ძებნის მუშაობს ის არის, რომ შევადარებთ შუა ღირებულება 32 00:01:44,130 --> 00:01:48,370 მასივი ნემსი, ჰგავს, თუ როგორ გავხსენით წიგნი შუა 33 00:01:48,370 --> 00:01:50,660 გვერდი კვირაში ნულოვანი. 34 00:01:50,660 --> 00:01:54,650 >> ასე რომ, მას შემდეგ, რაც შედარებით შუა ღირებულება ნემსი, შეგიძლიათ გაუქმება ან 35 00:01:54,650 --> 00:01:58,530 მარცხენა ან მარჯვენა ნახევარში მასივი გამკაცრება თქვენი საზღვრები. 36 00:01:58,530 --> 00:02:03,390 ამ შემთხვევაში, მას შემდეგ, რაც სამი, ჩვენი ნემსი, ნაკლებია, ვიდრე 10, შუა ღირებულება, 37 00:02:03,390 --> 00:02:05,990 მარჯვენა შეკრული შეუძლია შეამციროს. 38 00:02:05,990 --> 00:02:08,400 მაგრამ ცდილობენ, რომ თქვენი საზღვრები მჭიდრო როგორც შესაძლებელი. 39 00:02:08,400 --> 00:02:11,630 იმ შემთხვევაში, თუ შუა ღირებულება არ არის ნემსი, მაშინ თქვენ იცით, რომ თქვენ არ უნდა 40 00:02:11,630 --> 00:02:13,010 მოიცავს იგი თქვენს ძებნა. 41 00:02:13,010 --> 00:02:17,310 ასე რომ, თქვენ უფლება შეკრული შეიძლება გამკაცრდეს ძებნა საზღვრები მხოლოდ პატარა უფრო მეტი, 42 00:02:17,310 --> 00:02:21,770 და ასე შემდეგ და ასე შემდეგ, სანამ თქვენ თქვენი ნემსი. 43 00:02:21,770 --> 00:02:23,480 >> ასე რომ, რას pseudocode გამოიყურებოდეს? 44 00:02:23,480 --> 00:02:28,420 კარგად, ხოლო ჩვენ ჯერ კიდევ გადახედეთ სიაში და კიდევ აქვს ელემენტები 45 00:02:28,420 --> 00:02:33,690 გამოიყურება, ჩვენ შუა სიაში, და შედარების რომ შუა ღირებულება 46 00:02:33,690 --> 00:02:34,950 ჩვენი ნემსი. 47 00:02:34,950 --> 00:02:37,310 იმ შემთხვევაში, თუ ისინი ტოლია, მაშინ ეს ნიშნავს, რომ ჩვენ ვიდეო ნემსი და ჩვენ შეგვიძლია 48 00:02:37,310 --> 00:02:38,990 TRUE. 49 00:02:38,990 --> 00:02:42,870 >> წინააღმდეგ შემთხვევაში, თუ ნემსი ნაკლებია, ვიდრე შუა ღირებულება, მაშინ ეს ნიშნავს, რომ ჩვენ 50 00:02:42,870 --> 00:02:47,280 შეგიძლიათ გაუქმება მარჯვენა ნახევარში, და მხოლოდ ძებნა მარცხენა მხარეს მასივი. 51 00:02:47,280 --> 00:02:51,090 წინააღმდეგ შემთხვევაში, ჩვენ მოძებნოთ მარჯვენა მხარეს მასივი. 52 00:02:51,090 --> 00:02:54,410 და ბოლოს, თუ თქვენ არ გაქვთ მეტი ელემენტები მარცხენა მოძებნოთ მაგრამ თქვენ 53 00:02:54,410 --> 00:02:58,050 არ არის ნაპოვნი თქვენი ნემსი არ არის, მაშინ დაბრუნების ცრუ, რადგან ნემსის 54 00:02:58,050 --> 00:03:01,890 ნამდვილად არ არის haystack. 55 00:03:01,890 --> 00:03:05,270 >> ახლა neat რამ ამ pseudocode ორობითი ძებნა არის ის, რომ ეს შეიძლება იყოს 56 00:03:05,270 --> 00:03:09,940 გაგებული როგორც iterative ან რეკურსიული განხორციელება. 57 00:03:09,940 --> 00:03:13,810 ასე რომ, ეს იქნება რეკურსიული თუ მოუწოდა ძებნის ფუნქცია ფარგლებში ძებნა 58 00:03:13,810 --> 00:03:17,350 ფუნქციონირებს ორივე ნახევარში მასივი. 59 00:03:17,350 --> 00:03:21,030 ჩვენ დაფარავს უკან ცოტა მოგვიანებით რა თქმა უნდა, მაგრამ ვიცით, რომ ეს არის 60 00:03:21,030 --> 00:03:24,190 ვარიანტი თუ გსურთ ცდილობენ. 61 00:03:24,190 --> 00:03:26,030 >> ახლა მოდით შევხედოთ ჯიშია. 62 00:03:26,030 --> 00:03:30,750 დახარისხება იღებს მასივი და რიცხვი n, რომელიც არის ზომა მასივი. 63 00:03:30,750 --> 00:03:34,030 ახლა არსებობს სხვადასხვა სხვადასხვა სახის სახის, და თქვენ შეგიძლიათ შევხედოთ ზოგიერთი 64 00:03:34,030 --> 00:03:36,370 შორტები demos და განმარტებები. 65 00:03:36,370 --> 00:03:39,580 დაბრუნების ტიპის ჩვენი დალაგების ფუნქცია ბათილად. 66 00:03:39,580 --> 00:03:43,580 ასე რომ, ეს ნიშნავს, რომ ჩვენ არ ვაპირებთ დაბრუნების ნებისმიერი array ეხლა ჯიშია. 67 00:03:43,580 --> 00:03:48,140 ჩვენ რეალურად შეიცვლება, ძალიან array, რომელიც შევიდა ჩვენთვის. 68 00:03:48,140 --> 00:03:52,290 >> და ეს შესაძლებელია, რადგან კოლექტორები გაიარა მინიშნება C. ახლა ჩვენ 69 00:03:52,290 --> 00:03:55,290 იხილეთ მეტი მოგვიანებით, მაგრამ არსებითი განსხვავება გავლის 70 00:03:55,290 --> 00:03:59,340 რაღაც რიცხვი და გავლის მასივი, ის არის, რომ როდესაც თქვენ 71 00:03:59,340 --> 00:04:03,490 გაივლის რიცხვი, C უბრალოდ აპირებს ასლი, რომ რიცხვი და გაიაროს 72 00:04:03,490 --> 00:04:04,450 ის ფუნქცია. 73 00:04:04,450 --> 00:04:08,530 ორიგინალური ცვლადი არ შეიცვლება ერთხელ ფუნქციის დასრულდა. 74 00:04:08,530 --> 00:04:12,480 მასივი, მეორეს მხრივ, ეს არ აპირებს მიიღოს ასლი, და თქვენ 75 00:04:12,480 --> 00:04:17,910 რეალურად რედაქტირების ძალიან მასივი თავად. 76 00:04:17,910 --> 00:04:21,269 >> ასე რომ, ერთი ტიპის სახის არის შერჩევა ჯიშია. 77 00:04:21,269 --> 00:04:24,750 შერჩევა სახის სამუშაოების დაწყებული დასაწყისში, და მაშინ iterate 78 00:04:24,750 --> 00:04:26,820 მეტი და იპოვოს პატარა ელემენტს. 79 00:04:26,820 --> 00:04:30,710 და მაშინ სვოპ, რომ პატარა ელემენტს პირველი. 80 00:04:30,710 --> 00:04:34,360 და მაშინ გადავა მეორე ელემენტს , იპოვოს მომავალი პატარა 81 00:04:34,360 --> 00:04:38,320 ელემენტს, შემდეგ სვოპ რომ მეორე ელემენტია მასივი, რადგან 82 00:04:38,320 --> 00:04:41,100 პირველი ელემენტია უკვე დახარისხებული. 83 00:04:41,100 --> 00:04:45,370 და ასე შემდეგ, თქვენ კვლავაც ყველა ელემენტის იდენტიფიცირების პატარა 84 00:04:45,370 --> 00:04:47,690 ღირებულება და შევცვალე ის. 85 00:04:47,690 --> 00:04:53,460 >> მე უდრის 0, პირველივე ელემენტს to n მინუს 1, თქვენ აპირებს შედარება 86 00:04:53,460 --> 00:04:57,820 ყოველ მომდევნო ღირებულება შემდეგ, და იპოვოს ინდექსის მინიმალური ღირებულება. 87 00:04:57,820 --> 00:05:02,520 ერთხელ თქვენთვის მინიმალური ღირებულება ინდექსი, შეგიძლიათ სვოპ რომ ღირებულება მასივი 88 00:05:02,520 --> 00:05:05,930 მინიმალური და array I. 89 00:05:05,930 --> 00:05:09,760 >> სხვა ტიპის სახის რომ თქვენ შეგიძლიათ განხორციელება არის ბუშტი ჯიშია. 90 00:05:09,760 --> 00:05:14,380 ასე რომ, bubble sort iterates მეტი სია შედარებით მიმდებარე ელემენტები და 91 00:05:14,380 --> 00:05:17,720 შევცვალე ელემენტები, არასწორი მიზნით. 92 00:05:17,720 --> 00:05:22,380 და ამ გზით, უდიდესი ელემენტს ნება ბუშტი ბოლომდე. 93 00:05:22,380 --> 00:05:28,070 და სია დალაგებულია ერთხელ აღარ ელემენტები უკვე გაცვალეს. 94 00:05:28,070 --> 00:05:31,920 >> ასე რომ, ეს ორი მაგალითი სახის ალგორითმები, შეგიძლიათ განახორციელოს for 95 00:05:31,920 --> 00:05:33,230 იპოვოს პროგრამა. 96 00:05:33,230 --> 00:05:37,350 მას შემდეგ, რაც დასრულდება დალაგების, და თქვენ კეთდება ძიების, თქვენ დასრულდა. 97 00:05:37,350 --> 00:05:39,720 ჩემი სახელი არის Zamyla, და ეს არის CS50. 98 00:05:39,720 --> 00:05:46,987 >> [მუსიკის დაკვრა]