>> Zamyla CHAN: პირველი, რაც თქვენ შესაძლოა ცნობა იმის შესახებ, იპოვოს ის არის, რომ ჩვენ უკვე
არ კოდი დაწერილი ჩვენთვის.
ამ ეწოდება განაწილების კოდი.
ასე რომ, ჩვენ არა მხოლოდ წერილობით საკუთარი კოდექსის ნულიდან უქმნით.
პირიქით, ჩვენ შევსების voids ზოგიერთ წინასწარ არსებული კოდი.
>> Find.c პროგრამა მოთხოვნა ნომრები შევსება haystack, ეძებს
haystack განთავსების შესახებ წარმოდგენილი ნემსი, და ამას დარეკვით სახის და
ძიების, განსაზღვრული ფუნქციების in helpers.c.
ასე find.c წერია უკვე.
თქვენი სამუშაო დაწერა დამხმარე.
>> ასე რომ, რას ვაკეთებთ?
ჩვენ ახორციელებს ორი ფუნქცია.
ძებნა, რომელიც ბრუნდება ნამდვილი თუ ღირებულება გვხვდება haystack, დაბრუნების
ცრუ თუ ღირებულება არის არ haystack.
და მაშინ ჩვენ, ასევე, ახორციელებს სახის, რომელიც ახარისხებს მასივი მოუწოდა ღირებულებებს.
მოდით დაძლევის ძებნა.
>> ძიება ამჟამად ხორციელდება როგორც ხაზოვანი ძებნა.
მაგრამ შეგიძლიათ ამის გაკეთება ბევრად უკეთესად რომ.
ხაზოვანი ძებნა ხორციელდება O of n დრო, რომელიც საკმაოდ ნელი, თუმცა
შეგიძლიათ მოძებნოთ ნებისმიერი სია გადაეცა იგი.
თქვენი სამუშაო განახორციელოს ორობითი ძებნა, რომელიც აწარმოებს დრო O of log n.
ეს არის საკმაოდ სწრაფი.
>> მაგრამ არსებობს განაპირობებს.
ორობითი ძებნა შესაძლებელია მხოლოდ ძებნა მეშვეობით წინასწარ დახარისხებული სიები.
რატომ არის, რომ?
კარგად, მოდით შევხედოთ მაგალითს.
მოცემული მასივი ღირებულებები, haystack, ჩვენ ვაპირებთ იყოს ეძებს
განთავსების ნემსი, და ამ მაგალითად, რიცხვი 3.
>> ისე, რომ ბინარული ძებნის მუშაობს ის არის, რომ შევადარებთ შუა ღირებულება
მასივი ნემსი, ჰგავს, თუ როგორ გავხსენით სატელეფონო წიგნი შუა
გვერდი Week 0.
ასე რომ, მას შემდეგ, რაც შედარებით შუა ღირებულება ნემსი, შეგიძლიათ გაუქმება ან
მარცხენა ან მარჯვენა ნახევარში მასივი გამკაცრება თქვენი საზღვრები.
ამ შემთხვევაში, რადგან 3, ჩვენი ნემსი არის არანაკლებ 10, შუა ღირებულება,
მარჯვენა შეკრული შეუძლია შეამციროს.
>> მაგრამ ცდილობენ, რომ თქვენი საზღვრები მჭიდრო როგორც შესაძლებელი.
იმ შემთხვევაში, თუ შუა ღირებულება არ არის ნემსი, მაშინ თქვენ იცით, რომ თქვენ არ უნდა
მოიცავს იგი თქვენს ძებნა.
ასე რომ თქვენი უფლება შეკრული შეიძლება გამკაცრდეს ძებნა საზღვრები მხოლოდ პატარა უფრო მეტი,
და ასე შემდეგ და ასე შემდეგ, სანამ თქვენ თქვენი ნემსი.
>> რას ფსევდო კოდი გამოიყურებოდეს?
კარგად, ხოლო ჩვენ ჯერ კიდევ გადახედეთ სიაში და კიდევ აქვს
ელემენტები თვალი, ჩვენ შუა სიაში და შედარების რომ
შუა ღირებულება ჩვენი ნემსი.
იმ შემთხვევაში, თუ ისინი ტოლია, მაშინ ეს ნიშნავს, რომ ჩვენ ვიდეო ნემსი, და ჩვენ შეგვიძლია
TRUE.
>> წინააღმდეგ შემთხვევაში, თუ ნემსი ნაკლებია, ვიდრე შუა ღირებულება, მაშინ ეს ნიშნავს, რომ ჩვენ
შეგიძლიათ გაუქმება მარჯვენა ნახევარში და მხოლოდ ძებნა მარცხენა მხარეს მასივი.
წინააღმდეგ შემთხვევაში, ჩვენ მოძებნოთ მარჯვენა მხარეს მასივი.
და ბოლოს, თუ თქვენ არ გაქვთ მეტი ელემენტები მარცხენა მოძებნოთ მაგრამ თქვენ
არ არის ნაპოვნი თქვენი ნემსი არ არის, მაშინ დაბრუნების ცრუ.
იმის გამო, რომ ნემსი აუცილებლად არ არის haystack.
>> ახლა, ერთი neat რამ ამ ფსევდო კოდის ორობითი ძებნა არის ის, რომ
უნდა განიმარტოს, როგორც iterative ან რეკურსიული განხორციელება.
ასე რომ, ეს იქნება რეკურსიული თუ მოუწოდა ძებნის ფუნქცია ფარგლებში ძებნა
ფუნქციონირებს ორივე ნახევარში მასივი.
ჩვენ დაფარავს უკან ცოტა შემდეგ რა თქმა უნდა.
მაგრამ ვიცით, რომ ეს ვარიანტი თუ გსურთ ცდილობენ.