Butun sonli ikkilik qidiruv algoritmi





![R : = n – 1
While L ! = R
M : = ceil ((L+R)/2)
If A(m) > T then
R : = m – 1
else :
L : = m
If A(L) = T then
return L
return unsuccessful
Takroriy elementlar .
Protsedura, massivda takroriy elementlar mavjud bo’lsa ham,
elementi maqsadli qiymatga teng bo’lgan har qanday indeksni
qaytarishi mumkin. Misol uchun , Qidiriladigan massiv[ 1 , 2 , 3 , 4 , 5 ,
6 , 7 ] va maqsad edi.
Agar 4 bo’lsa , algoritm uchun to’rtinchi (indeks 3 ) ni
qaytarish to’g’ri bo’ladi, yoki beshinchi (indeks 4) element . Oddiy
protsedura bu holda 4-elementni (indeks 3) qaytaradi. U har doim ham
birinchi dublikatni qaytarmaydi (hali 4-elementni qaytaradigan [ 1,
2 ,3 ,4 , 5 , 6 , 7] ni ko’rib chiqing ).
Biroq, ba’zan massivda takrorlanadigan maqsadli qiymat uchun
eng chap elementni yoki eng o’ng elementni topish kerak bo’ladi.
Yuqoridagi misolda 4 - element 4 – qiymatning eng chap
elementi, 5 – element esa 4 - qiymatning eng o’ng elementidir.
Yuqoridagi muqobil protsedura, agar shunday element mavjud bo’lsa
, har doim eng o’ngdagi element indeksini qaytaradi.
Eng chap elementni topish tartibi.
Eng chap elementni topish uchun quyidagi protseduradan
foydalanish mumkin:
1. L ni 0 ga va R ni n ga o’rnating.
2. L<R bo’lsa ,
1. L+R/2 ning qavatga m (o’rta elementning o’rni) qo’ying.
2. A
m <T , ga teng bo’lgan butun sondir.](/data/documents/da597838-2918-4350-8122-1e03dbc65d6f/page_6.png)

![50
30
20 40 90
80
100
Ikkilik qidiruvni ifodalovchi daraxt. Bu yerda [20 , 30, 40, 50, 80, 90, 100] va
har biri qidirilmoqda.Qiymat 40 ekan.
Kosmik murakkablik.
Butun sonli ikkilik qidiruv uchun elementlarga uchta ko’rsatgich kerak
bo’ladi , ular massiv indekslari yoki xotira joylariga ko’rsatgich bo’lishi
mumkin. Shuning uchun butun sonli ikkilik qidiruvning murakkabligi
hisoblashning so’zli RAM modelida O(1) dir.
Iteratsiya , o’rtacha va eng yomon holatda talab qilinadigan takrorlash
sonini oshirish . Bu taqqoslashga asoslangan boshqa qidiruv algoritmlari
uchun ham shundaydir , chunki ular ba’zi maqsadli qiymatlarda tezroq
ishlashi mumkin bo’lsa-da, barcha elementlar bo’yicha o’rtacha qidiruvga
qaraganda yomonroqdir . Massivni ikkiga bo’lish orqali ikkilik qidiruv ikkala
pastki massivning ishlash ikkilik o’lchamlari o’xshash bo’lishini ta’minlaydi .
imkon qadar
O’rtacha ishning chiqarilishi .
Butun sonli ikkilik qidiruv orqali amalga oshiriladigan iteratsiyalarning
o’rtacha soni har bir elementning izlanish ehtimoliga bog’liq .
Muvaffaqiyatli qidiruvlar va muvaffaqiyatsiz qidiruvlar uchun o’rtacha holat
boshqacha.](/data/documents/da597838-2918-4350-8122-1e03dbc65d6f/page_8.png)

![ishonchliligini nazorat qiliuvchi berilgan ehtimollik bilan . Har bir shovqinli
ikkilik qidiruv protsedurasi kamida amalga oshirilishi kerak
2.2. Kvant ikkilik qidiruv.
Klassik kompyuterlar ikkkilik qidiruvni amalga oshirishda aniq
[ log
2 n + 1 ] iteratsiyalarning eng yomon holati bilan chegaralanadi .
Ikkilik qidiruv uchun kvant algoritmlari hali ham log2 n so’rovlar
nisbati bilan chegaralangan ( klassik protseduraning takrorlanishini
ifodalaydi ) , lekin doimiy omil bittadan kamroq bo’lib , kvant
kompyuterlarida kamroq vaqt murakkabligini ta’minlaydi . Har qanday
aniq kvant ikkilik qidiruv protsedurasi , ya’ni har doim to’g’ri
natija beradigan protsedura hech bo’lmaganda talab qiladi .
Tarix.
Tezroq qidirish imkonini beradigan narsalar ro’yxatini saralash
g’oyasini antik davrga borib taqaladi . Ma’lum bo’lgan eng qadimgi
misol Bobildan eramizgacha bo’lgan Inakibit – Anu planshetidir .
Miloddan avvalgi 200 yil . Planshetda 500 ga yaqin sexagesimal
mavjud raqamlar va ularning o’zaro leksikografik tartibda
tartiblangan , bu ma’lum bir yozuvni qidirishni osonlashtiradi . Bundan
tashqari , Egay orollarida birinchi harfi bo’yicha saralangan bir
nechta nomlar ro’yxati topilgan . Milodiy 1286 - yilda tugallangan
lotincha lug’at katolikon so’zlarni faqat birinchi harflardan farqli
ravishda alifbo tartibda tartiblash qoidalarini tavsiflovchi birinchi
asar edi .
1946 – yilda Jon Mauchli birinchi bo’lib hisoblash bo’yicha
kollejning asosiy va asosiy kursi bo’lgan Mur maktabi ma’ruzalarining
bir qismi sifatida ikkilik qidiruv haqida gapirdi . 1957 - yilda Uilyam
Uesli Peterson interpolatsiyani qidirishning birinchi usulini nashr etdi .
Har bir nashr etilgan ikkilik qidiruv algoritmi 1960 yilgacha Derrik
Genri Lehmer barcha massivlarda ishlaydigan ikkilik qidiruv
algoritmini nashr etgunga qadar uzunligi ikkilik kuchidan bir kichik
bo’lgan massivlar uchungina ishlagan . 1962 – yilda Hermann
Bottenbruch ikkilik qidiruvning ALGOL 60 dasturini taqdim etdi , u
oxirida tenglik uchun taqqoslashni joylashtirdi , o’rtacha takrorlash
sonini bittaga oshirdi , lekin har bir iteratsiya
uchun taqqoslash sonini bittaga qisqaradi .
Yagona ikkilik qidiruv 1971 – yilda Stenfod universitetidan
A .K.Chandra tomonidan ishlab chiqilgan . 1986 - yilda Bernard CHazelle](/data/documents/da597838-2918-4350-8122-1e03dbc65d6f/page_10.png)






![Yagona ikkilik qidiruv joriy va keyingi ikkita mumkin bo’lgan o’rta
elementlar o’tasidagi farqni saqlaydi . Yagona ikkilik qidiruv pastki va
yuqori chegaralar o’rniga joriy iteratsiyadan keyingi indeksni farqini
saqlaydi. Farqlarni o’z ichiga olgan agar izlananadigan massiv [1 , 2 ,3 ,
4 , 5 , 6 , 7 ,8 ,9 10 , 11 ] bo’lsa , o’rta element ( m ) 6 bo’ladi . Bu holda , o’rta
chap pastki qatorning elementi ([1 , 2, 3 , 4 , 5 ]) 3 va o’ng pastki
qatorning o’rta elementi ([7 , 8 , 9 , 10 , 11 ]) 9 . Yagona ikkilik qidiruvi 3
qiymati , chunki ikkala indeks ham 6 dan bir xil miqdorda farq qiladi .
Qidiruv maydonini qisqartirish uchun algoritm qo’shadi yoki ayiradi ,
o’rta element ineksidan bu o’zgarish . Yagona ikkilik qidiruv o’rta nuqtani
hisoblash samarasiz bo’lgan tizimlarda , masalan , kasrlarni kompyuterlarda
tezroq bo’lishi mumkin.
Eksponensial qidiruv.
Eksponensial qidiruv ikkilik qidiruvni cheklanmagan ro’yxatlargacha
kengaytiradi . U ikkining kuchi va elementni topishdan boshlanadi .
Shundan so’ng , u o’rnatiladi bu indeks yuqori chegara sifatida
va ikkilik qidiruvga o’tadi . Qidiruv ikkilik qidiruv boshlanishdan oldin
[log
2 + 1 ] iteratsiyani va ikkilik qidiruvning ko’pi bilan [ log ] iteratsiyani
oladi , bunda x maqsadli qiymatning o’rni . Eksponensial qidiruv
cheklangan ro’yxatlarda ishlaydi , lekin maqsadli qiymat massiv boshiga
yaqin joylashgan taqddirdagina ikkilik qidiruvga nisbatan yaxshilanishga
aylanadi .
CHiziqli qidirish .
Chiziqli qidirish algoritmi juda oddiy algoritm bo’lib , u arraydagi har bir
elementni qidirilayotgan element bilan birma – bir solishtirib chiqadi.
Algoritm murakkabligi O(n) bo’lib , bu real hayotda juda ham sekin bo’lishi
mumkin.
Grafiklarga umumlashtirish .
Butun sonli ikkilik qidiruv ma’lum turdagi grafiklarda ishlash uchun
umumlashtirildi , bunda maqsadli qiymat massiv elementi o’rniga tepada
saqlanadi . Ikkilik qidiruv daraxtlar shunday umumlashmalardan biridir -
daraxtdagi cho’qqi (tugun ) so’ralganda , algoritm yoki cho’qqining maqsadi
ekanligini bilib olamiz .
20](/data/documents/da597838-2918-4350-8122-1e03dbc65d6f/page_17.png)

Mavzu:”Butun sonli ikkilik qidiruv algoritmi” MUNDARIJA KIRISH…………………………………………..3 I Bob. Butun sonli ikkilik qidiruvni nazariy asoslari. 1.1.Butun sonli ikkilik qidiruv haqida…………..4 1.2.Algoritm tushunchasi………………………….6 1.3. Muvaffaqiyatli qidiruvlar……………………..7 1.4. Muvaffaqiyatsiz qidiruvlar…………………… 11 II Bob.Butun sonli ikkilik qidiruvni ishlab chiqish..12 2.1. Shovqinli ikkilik qidiruv …………………….12 2.2.Kvant ikkilik qidiruv…………………………..12 2.3. Muqobil protseduraning bajarish……………..15 2.4. Lineer qidiruv………………………………..16 Xulosa…………………………………………..19 ADABIYOTLAR RO’YXATI………………….20
KIRISH Butun sonli ikkilik qidiruv algoritmi . “Dasturlashning eng asosiy muommosi - bu murakkablik . Murakkablik ni hal qilishning faqatgina bitta asosiy yo’li bor : Bo’lib tashla va hukmronlik qil “ -- Bjarni Stroustrup Dasturlashda , bo’lib tashla va hukmronlik qil – bu algoritmik paradigma bo’lib, bu paradigmaning asosiy g’oyasi algoritmik masalalarni bosh masalaga o’xshash kichik qismlarga bo’lib tashlab , ularni rekursiv hal qilishdan iborat .Bu paradigmada masala qismlarga bo’linganligi sababli , qism masalalar bosh masalaga qaraganda kichikroq bo’lishi va bu bo’linish to’xtashi uchun asos holat bo’lishi kerak . Barcha turdagi bo’lib tashla va hukmronlik qil algoritmlari 3ta bosqichdan iborat bo’ladi : 1.Bo’lib tashlash bosqichi . Bunda bosh masala huddi shu masalaga o’xshash kichikroq masalalarga bo’lib chiqiladi . 2.Hukmronlik bosqichi . Asos holatimizga mos kelib qolgan qism masalalar huddi u kabi yechiladi . 3.Birlashtirish bosqichi. Bu bosqichda yechiladigan kichik qism masalalar qaytib birlashtirish chiqiladi va bu bosh masala yechimi bo’ladi . I.Bob. Butun sonli ikilik qidiruvni nazariy asoslari . 1.1. Butun sonli ikkilik qidiruv haqida . Algoritm fanida ikkilik qidiruv , shuningdek , yarim intervalli qidiruv ,logarifmik qidiruv yoki ikkilik chop deb nomlanuvchi , tartiblangan massiv ichida maqsadli qiymatning o’rnini topadigan qidiruv algoritmidir. Ikkilik qidiruv maqsadli qiymatni massivning o’rta elementi bilan solishtiradi . Agar ular teng bolmasa , nishon yo’qolmaydigan yarmi yo’q qilinadi. Va qolgan yarmida
qidirish yana davom etadi. Maqsadli qiymat bilan solishtirish uchun o’rta elementi olish va maqsadli qiymat topilguncha buni takrorlash. Agar qidiruv qolgan yarmi bo’sh bo’lishi bilan tugasa , maqsad massivda emas. Ikkilik qidiruv algoritmi. Ikkilik qidiruv algoritmining vizualizatsiyasi. 7 maqsadli qiymatlari Class qidiruv algoritmi Malumotlar tuzilishi massiv Eng yomon ishlash O(log n) Eng yaxshi holat O(1) O’rtacha ishlash O(log n) Eng yomon holatda bo’sh joy Q(1) Ikkilik qidiruv eng yomon holatda logarifmik vaqtda ishlaydi, O(logn) taqqoslashlarni amalga oshiradi, bu yerda n massivdagi elementlari soni. Ikkilik qidiruv kichik massivlardan tashqari chiziqli qidiruvga qaraganda tezroq. Biroq, ikkilik qidiruvni qo’llash uchun massiv avval tartiblangan bo’lishi kerak. Tez qidirish uchun mo’ljallangan maxsus ma’lumotlar tuzilmalari mavjud , masalan , xesh-jadvallar, ularni ikkilik qidiruvdan ko’ra samaraliroq qidirish mumkin. Biroq , ikkilik qidiruv kengroq muommolarni hal qilish uchun ishlatilishi mumkin, masalan, massivda yo’q bo’lsa ham, maqsadga nisbatan massivdagi keyingi eng kichik yoki keyin eng katta elementni topish. Ikkilik qidiruvning ko’plab variantlari mavjud. Xususan , Kasrli kaskad bir nechta massivlarda bir xil qiymat uchun ikkilik qidiruvni tezlashtiradi . Fraksional kaskad hisoblash geometriyasida va boshqa ko’plab sohalarda bir qator qidiruv muommolarini samarali hal qiladi. Eksponensial qidiruv ikkilik qidiruv cheklanmagan ro’yxatlargacha kengaytiradi . Ikkilik qidiruv daraxt va B-daraxt ma’lumotlar tuzilmalari ikkilik qidiruvga asoslangan. 1.2. Algoritm tushunchasi.
Ikkilik qidiruv tartiblangan massivlarda ishlaydi. Ikkilik qidiruvga massivning o’rtasida joylashgan elementlarni bilan solishtirishdan boshlanadi. Agar maqsadli elementga mos kelsa, uning massivdagi o’rni qaytariladi. Agar maqsadli qiymat elementdan kichik bo’lsa, qidiruv massivning pastki yarmida davom etadi. Shunday qilib, algoritm har bir iteratsiyada maqsadli qiymat yotmasligi mumkin bo’lgan yarmini yo’q qiladi. Protecure - jarayon A 0, A 1 ,A 2,: ……………A n-1 qiymatlari yoki yozuvlari bo’lgan n ta elementdan iborat A massivi shunday tartiblanganki, A 0 < A 1 < A 2 <……………..< A n-1 va maqsad qiymat T bo’lsa quyidagi dastur Adagi T indekisini topish uchun ikiklik qidiruvdan foydalaniladi. Function binary_search(A, n, T) is L :=0 R :=n-1 While L<R do, m := floor(L+R)/2 if A(m)< T then L : = m + 1 else if A(m) > T then R : = m - 1 else : return m return unsuccessful Shu bilan bir qatorda , algoritm L+R/2 shiftini olish mumkin.
1.3.Muvaffaqiyatli qidiruvlar . Butun sonli ikkilik qidiruv daraxti ko’rinishda muvaffaqiyatli qidirish ichki yo’l deb ataladigan ildizdan maqsadli tugungacha bo’lgan yo’l bilan ifodalanishi mumkin. Butun sonli ikkilik qidiruv solishtirishlar yordamida qidirish uchun optimal algoritm bo’lganligi sababli, bu muommo n ta tugunli barcha binar daraxtlarning minimal ichki yo’l uzunligi hisoblash uchun qisqartiriladi, bu quyidagilarga teng: I(n) = ∑ k=1 n (log 2 (k)) Masalan, 7 element massivda ildiz bir iteratsiyani talab qiladi, ildiz ostidagi ikkita element ikkita takrorlashni va quyidagi joylashgan to’rtta elementni talab qiladi. Muqobil protsedura Yuqoridagi protsedurada algoritm har bir iteratsiyada o’rta element (m) maqsad (T) ga teng yoki yo’qligini tekshiradi. Ba’zi ilovalar har bir iteratsiya paytida ushbu tekshiruvni o’tkazib yuboradi. Algoritm bu tekshirishni faqat bitta element qolganda (L=R bo’lganda ) amalga oshiradi. Bu tezroq taqqqoslash davriga olib keladi, chunki har biriga bitta taqqoslash o’chiriladi. Hermann Bottenbruch 1962-yilda ushbu tekshiruvni o’tkazib birinchi dasturni nashr etdi. L ni 0 va R n-1 L ga teng emas R 1. m ni (o’rta elementning joylashuvi ) L+R/2 ni o’rnating , kichik butun son L+R/2 dan katta. 2. Agar A m > T, bo’lsa, R ni m-1 ga qo’ying . 3. Aks holda , A m < T; L ni m ga qo’ying. 4. Endi L=R qidiruv amalga oshiriladi. Agar A L = T , bo’lsa L ni qaytaring. Aks holda , qidiruv muvaffaqiyatsiz tugaydi. Shift ceil funksiyasi bo’lsa, ushbu versiyaning psevdokodi: Funksiya binary _search _alternative( A, n, T) L : = 0