Კომპიუტერები, Პროგრამირების
Ორობითი ძებნა ერთ - ერთი ყველაზე იოლი გზა ელემენტს მასივი
საკმაოდ ხშირად, პროგრამისტების, თუნდაც დამწყებთათვის, წინაშე, რომ არ არსებობს კომპლექტი ნომრები, რომელიც უნდა იპოვოს კონკრეტული რაოდენობა. ეს არის ეს კოლექცია მოუწოდა მასივი. და მოვძებნოთ ელემენტი, არსებობს უამრავი გზა. მაგრამ ყველაზე მარტივი მათგანი შეიძლება ჩაითვალოს ორობითი ძებნა მარჯვენა. რა არის ეს მეთოდი? და როგორ უნდა განახორციელოს ორობითი ძებნა? Pascal არის მარტივი გარემო ორგანიზაციის ასეთი პროგრამა, ასე რომ, ჩვენ ვიყენებთ მას სწავლა.
პირველ რიგში, ანალიზი, რა უპირატესობა ამ მეთოდით, ეს ასე ჩვენ შეგვიძლია გავიგოთ,
ასე რომ, რა არის სამუშაო პრინციპი ეს მეთოდი? დაუყოვნებლივ უნდა ვთქვა, რომ ბინარული ძებნის მუშაობს არ არის არანაირად მასივი, მაგრამ მხოლოდ დახარისხებული კომპლექტი ნომრები. ამავე ყოველი ნაბიჯი შუა ელემენტს array (რაც იმას ნიშნავს, რაოდენობის ელემენტი). თუ საჭირო რაოდენობის მეტია საშუალო, მაშინ ყველაფერი, რაც დარჩა, რომელიც ნაკლებია, ვიდრე საშუალო საკანში, შეიძლება განადგურდეს და არ უნდა გამოიყურებოდეს არსებობს. პირიქით, თუ ნაკლები საშუალო - მათ შორის, ნომრები უფლება, თქვენ ვერ ვეძებოთ. აირჩიეთ ახალი ძიების ადგილი, სადაც პირველი ელემენტი იქნება შუა ელემენტს მთელი მასივი, და ბოლო და ბოლო ნება. საშუალო რაოდენობა new სფეროში იქნება ¼ ყველა სეგმენტი, რომ არის, (ბოლო ელემენტს + შუა ელემენტს მთელი მასივი) / 2. ისევ და ისევ, იგივე ოპერაცია - შედარებით საშუალო რაოდენობა მასივი. თუ სამიზნე ღირებულება ნაკლებია, ვიდრე საშუალო, ჩვენ უარს მარჯვენა მხარეს, და ასევე უნდა გავაკეთოთ შემდეგი, დღემდე ამ შუა ელემენტს არ არის სასურველი.
რა თქმა უნდა, ეს არის საუკეთესო შევხედოთ მაგალითს, თუ როგორ წერენ ორობითი ძებნა. Pascal აქ ჯდება ვინმეს - მობილური არ არის მნიშვნელოვანი. მოდით დავწეროთ მარტივი პროგრამა.
ეს არის მასივი 1 სთ სახელწოდებით "massiv", ცვლადი მითითებით ქვედა საზღვრის ძიება, სახელწოდებით "Niz", ზედა ზღვარი, სახელწოდებით "Verh", საშუალო საძიებო ტერმინი - "sredn"; და საჭირო რაოდენობის - "ISK".
ასე რომ, პირველი, მივანიჭოთ ზედა და ქვედა ზღვარი სპექტრი ძებნა:
Niz: = 1;
Verh: = h + 1;
მაშინ ორგანიზება ციკლიდან "სანამ ბოლოში ნაკლებია, ვიდრე ზედა ზღვარი":
მიუხედავად იმისა, რომ Niz
თითოეულ ნაბიჯს, ჩვენ გაყოფა სეგმენტი 2:
sredn: = (Niz + Verh) div 2; {გამოიყენეთ ფუნქცია div, რადგან გათიშე გარეშე დარჩენილი}
ყოველ დროს, მიმოხილვა. იმის გამო, რომ ნივთი უკვე ნაპოვნია, თუ საშუალო სასურველი შეუშალოს ციკლი:
თუ sredn = ISK შემდეგ შესვენება;
თუ შუა ელემენტს მასივი სასურველზე მეტია, გაუქმება მარცხენა მხარეს, რომ არის, ზედა ზღვარი საშუალო დანიშნოს ელემენტი:
თუ მასივი [sredn]> ISK მაშინ Verh: = sredn;
და თუ პირიქით, ეს ქმნის ქვედა საზღვრის:
სხვა Niz: = sredn;
დასრულდება;
ეს არის ის, რომ იქნება ამ პროგრამაში.
მოდი, განვიხილოთ, თუ როგორ გამოიყურება ორობითი მეთოდის პრაქტიკაში. მიგვაჩნია, რომ ეს მასივი: 1, 3, 5, 7, 10, 12, 18 და ის შეეცდება რიცხვი 12.
საერთო ჯამში ჩვენ გვაქვს 7 ელემენტები, ასე იქნება მეოთხე საშუალო ღირებულება 7.
| 1 | 3 | 5 | 7 | 10 | 12 | 18 |
მას შემდეგ, რაც უფრო მეტია, ვიდრე 12, 7, 1.3 და 5 ელემენტები, ჩვენ შეგვიძლია გაუქმება. შემდეგ ჩვენ მივიღეთ ნომერი 4, 4/2 ნარჩენების 2. ასე რომ, ახალი ელემენტი იქნება საშუალოდ 10.
| 7 | 10 | 12 | 18 |
აქ, შუა ელემენტს არის უკვე 12, ეს არის საჭირო რაოდენობის. ეს დავალება დასრულებულია - ნომერი 12 ი.
Similar articles
Trending Now