Fundamental masalalar to'plamdagi elementni topish vazifasi. Ikkilik qidirish.
Mavzu: Fundamental masalalar: to'plamdagi elementni topish vazifasi. Ikkilik qidirish. Reja: Ikkilik qidiruv algoritmi - Binary search algorithm Ikkilik qidirish algoritmi ishlash prinsipi
Ikkilik qidiruv algoritmi - Binary search algorithm Yilda Kompyuter fanlari, ikkilik qidirish, shuningdek, nomi bilan tanilgan yarim intervalli qidiruv,[1] logaritmik qidirish,[2] yoki ikkilik pirzola,[3] a qidirish algoritmi a ichida maqsad qiymatining o'rnini topadigan tartiblangan qator.[4][5] Ikkilik qidiruv maqsad qiymatini massivning o'rta elementi bilan taqqoslaydi. Agar ular teng bo'lmasa, maqsad yotishi mumkin bo'lmagan yarmi yo'q qilinadi va qidiruv qolgan yarmida davom etadi, yana maqsad element bilan taqqoslash uchun o'rta elementni oladi va maqsad qiymati topilmaguncha buni takrorlaydi. Agar qidiruv qolgan yarmi bo'sh bo'lishi bilan tugasa, maqsad massivda emas. Ikkilik qidiruv ishlaydi logaritmik vaqt ichida eng yomon holat, qilish taqqoslashlar, qaerda - bu massivdagi elementlar soni.[a][6] Ikkilik qidiruv tezroq chiziqli qidiruv kichik massivlardan tashqari. Biroq, ikkilik qidiruvni amalga oshirish uchun birinchi navbatda qatorni saralash kerak. Ixtisoslashgan ma'lumotlar tuzilmalari kabi tezkor qidiruv uchun mo'ljallangan xash jadvallar, ikkilik qidiruvdan ko'ra samaraliroq qidirish mumkin. Shu bilan birga, ikkilik qidiruv yanada kengroq muammolarni hal qilish uchun ishlatilishi mumkin, masalan, qatorda yo'q bo'lsa ham, maqsadga nisbatan massivda keyingi eng kichik yoki eng katta elementni topish. Ikkilik qidiruvning ko'plab xilma-xilliklari mavjud. Jumladan, kasrli kaskad bir nechta qiymatdagi bir xil qiymatni ikkilik izlashni tezlashtiradi. Kesirli kaskad bir qator qidirish muammolarini samarali hal qiladi hisoblash geometriyasi va boshqa ko'plab sohalarda. Eksponent qidirish ikkilik qidiruvni cheklanmagan ro'yxatlarga kengaytiradi. The ikkilik qidiruv daraxti va B daraxti ma'lumotlar tuzilmalari ikkilik qidiruvga asoslangan. Algoritm Ikkilik qidiruv tartiblangan massivlarda ishlaydi. Ikkilik qidiruv massivning o'rtasidagi elementni maqsad qiymati bilan taqqoslash orqali boshlanadi. Agar
maqsad qiymati elementga to'g'ri keladigan bo'lsa, uning massivdagi o'rni qaytariladi. Maqsad qiymati elementdan kam bo'lsa, qidiruv qatorning pastki yarmida davom etadi. Maqsad qiymati elementdan katta bo'lsa, qidiruv qatorning yuqori qismida davom etadi. Shunday qilib, algoritm maqsadli qiymat har bir iteratsiyada yotishi mumkin bo'lmagan yarmini yo'q qiladi.[7] Ikkilik qidiruv algoritmi – Bu algoritm asosan to’plamni ikkiga bo’lishlar orqali qidirishdan iborat. Yani unda bo’linishlar toki kalit so’z topilmagunicha davom etadi. Yuqoridagilardan tashqari qidiruv algoritmlarini quyidagi turlari mavjud: Jump Search. Interpolatsiya qidiruvi. Eksponensial qidiruv. Sublist qidiruv. Va h-k.
Misol tariqasida Ikkilik qidiruvni rekursiv shaklda Java dasturlash tilida ifoda qiladigan bo’lsak quyidagi ko’rinishga ega bo’ladi: class BinarySearch { int binarySearch(int arr[], int l, int r, int x) { if (r >= l) { int mid = l + (r - l) / 2; if (arr[mid] == x) return mid; if (arr[mid] > x) return binarySearch(arr, l, mid - 1, x); // return binarySearch(arr, mid + 1, r, x); } // return -1; } // public static void main(String args[]) { BinarySearch ob = new BinarySearch(); int arr[] = { 2, 3, 4, 10, 40 }; int n = arr.length;
int x = 10; int result = ob.binarySearch(arr, 0, n - 1, x); if (result == -1) System.out.println("Element topilmadi"); else System.out.println("Element indeksi - " + result); } } Ixtiyoriy ma’lumot (yoki tuzilma elementi) boshqa ma’lumotdan biror bir belgisi orqali farq qiladi. Mazkur belgi kalit deb ataladi. Kalit noyob bo’lishi, ya’ni mazkur kalitga ega ma’lumot jadvalda yagona bo’lishi mumkin. Bunday noyob kalitga boshlang’ich (birinchi) kalit deyiladi. Ikkinchi kalit bir jadvalda takrorlansada u orqali ham qidiruvni amalga oshirish mumkin. Ma’lumotlar kalitini bir joyga yig’ish (boshqa jadvalga) yoki yozuv sifatida ifodalab bitta maydonga kalitlarni yozish mumkin. Agar kalitlar ma’lumotlar jadvalidan ajratib olinib alohida fayl sifatida saqlansa, u holda bunday kalitlar tashqi kalitlar deyiladi. Aks holda, ya’ni yozuvning bir maydoni sifatida jadvalda saqlansa ichki kalit deyiladi. Kalitni berilgan argument bilan mosligini aniqlovchi algoritmga berilgan argument bo’yicha qidiruv deb ataladi. Qidiruv algoritmi vazifasi kerakli ma’lumotni jadvaldan topish yoki yo’qligini aniqlashdan iboratdir. Agar kerakli ma’lumot yo’q bo’lsa, u holda ikkita ishni amalga oshirish mumkin: 1. Ma’lumot yo’qligini indikatsiya qilish (belgilash) 2. Jadvalga ma’lumotni qo’yish. Faraz qilaylik , k – kalitlar massivi. Har bir k(i) uchun r(i) – ma’lumot mavjud. Key – qidiruv argumenti. Unga rec - informatsion yozuv mos qo’yiladi. Jadvaldagi ma’lumotlarning tuzilmasiga qarab qidiruvning bir necha turlari mavjud. Ketma-ket qidiruv algoritmi