Butun sonli ikkilik qidiruv algoritmi
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