7.5. Massivdan ma`lumotlarni ikkiga bo`lish usuli bilan qidirish
Ko`pincha elementlari tartiblangan massivdan biror ma`lumotni qidirish bilan bog’liq masalalarni yechishga to`g’ri keladi. Masalan, alfavit bo`yicha tartiblangan familiyalar massividan "Aliyev" familiyasi, kitoblar massividan "Shum bola" romanini qidirib topish va x.k. Tartiblangan massivdan ma`lumot qidirish masalasi uchun teng ikkiga bo`lish usuli samarali usullardan biri hisoblanadi.
Faraz qilaylik, o`sish tartibida tartiblangan massivda berilgan sonning (namuna) bor yoki yo`qligini aniqlash talab qilingan bo`lsin.
Teng ikkiga bo`lish usulning g’oyasi namuna izlanayotgan oraliqni teng ikkiga bo`lishga asoslanadi. Tekshirishni boshlashdan avval, massivda izlangan namuna element mavjud emas deb faraz qilinadi. Izlash oralig’i chap chegarasi kichik, o`ng chegarasi katta, ular o`rtasida joylashgan element indeksini urta bo`lsin degan belgilash kiritiladi. Dastlab o`rtadagi element indeksi urta topiladi. So`ng namuna urta indeksli element bilan taqqoslanadi. Agar ular teng bo`lsa, masala yechimi topildi deb jarayon to`xtatiladi. Aks holda, namuna urta indeksli elementga nisbatan qaysi oraliqda joylashganligi aniqlanadi. Unga ko`ra, namuna izlanayotgan oraliqning nokerak qismini tashlab, kerakli qismi olib qolinadi. Shu oraliqqa bog’liq ravishda yuqoridagi belgilashga binoan katta yoki kichik o`zgaruvchilardan biri urta qiymatini oladi. Shundan keyin, katta yoki kichik ning yangi qiymatlari uchun urta ning yangi qiymati hisoblanadi va yuqoridagi jarayon yana bir marta takrorlanadi. Bu ish toki namunaga teng bo`lgan element topilguncha yoki izlash oralig’i uchun katta – kichik 1 bo`lib qolguncha davom ettiriladi. So`ngi holda katta yoki kichik indeksli elementlarning namunaga tengligi tekshiriladi. Urta qiymatini aniqlashda kattakichik miqdorning juft yoki toqligini tekshirib, agar u juft bo`lsa, urta(kattakichik)2, aks holda urta[kattakichik]21 soni olinadi. Bu yerda [x]-butun sonni anglatadi.
Faraz qilaylik, B massivida n ta element mavjud bo`lsin. Teng ikkiga bo`lish usuli quyidagi algoritm yordamida amalga oshiriladi.
Boshlansin
Kiritilsin Namuna
y : 'yo`q'
kichik : 1; katta : n
agar katta-kichik 1 yoki y 'yo`q' bo`lsa 11 ga o`tilsin
a : kichik katta
agar a juft bo`lsa, urta : (kichik katta) 2, aks holda urta : [kichik katta] 2 1
agar NamunaB(urta) bo`lsa 12 ga o`tilsin
agar namuna>B(urta) bo`lsa kichik : urta, aks holda katta : urta
5 ga o`tilsin
Agar B(kichik)Namuna yoki B(katta) Namuna bo`lsa y:'Xa'
Chiqarilsin u
Tamom
Bu dasturining dialog oynasi 7.10-rasmda berilgan. Label3 maydoni qidirish natijasi hamda qidirish qaydnomasi uchun mo`ljallangan. Agar Qaydnomani chiqarilsin bayroqchasi o`rnatilgan bo`lsa, Qaydnoma kichik, urta va katta o`zgaruvchilarning dastur davomida qabul qilgan qiymatlarini formaga chiqaradi va ikkiga bo`lish usuli mohiyatini tahlil qilishga yordam beradi. Ilova formasida foydalanilgan CheckBox (bayroq-cha) komponentasining nishoni Standard qurollar panelida joylashgan. CheckBox komponentasining ayrim hususiyatlari 7.5-jadvalda berilgan.
Do'stlaringiz bilan baham: |