Binary search
Binary search algoritmi qidiruv algoritmlaridan biridir va ma'lumotlarni qidirishda juda samarali hisoblanadi.
Binary search algoritmi qidiruv algoritmlaridan biridir va ma'lumotlarni qidirishda juda samarali hisoblanadi. Bu algoritm faqat tartiblangan (saralangan) ro'yxatlarda ishlaydi. Binary search algoritmining asosiy g'oyasi shundaki, qidirilayotgan elementni ro'yxatning o'rtasidagi element bilan taqqoslash orqali qidiruv hududini har bir bosqichda ikkiga qisqartirishdir.
Binary Search Algoritmining Ishlash Printsipi
-
Boshlang'ich holat:
- Ro'yxatning boshlanishi va oxirini ko'rsatuvchi
left
varight
indekslari olinadi.left
boshlang'ichda 0 ga teng bo'ladi,right
esa ro'yxatning oxirgi indeksiga teng bo'ladi.
- Ro'yxatning boshlanishi va oxirini ko'rsatuvchi
-
O'rta qiymatni aniqlash:
- Ro'yxatning o'rtasidagi element indeksini
middle = (left + right) // 2
orqali aniqlaymiz.
- Ro'yxatning o'rtasidagi element indeksini
-
Elementni taqqoslash:
- Agar o'rta qiymat qidirilayotgan elementga teng bo'lsa, qidiruv muvaffaqiyatli yakunlanadi va bu qiymatning indeksi qaytariladi.
- Agar qidirilayotgan element o'rta qiymatdan kichik bo'lsa, qidiruvni chap qismda davom ettiramiz (
right = middle - 1
). - Agar qidirilayotgan element o'rta qiymatdan katta bo'lsa, qidiruvni o'ng qismda davom ettiramiz (
left = middle + 1
).
-
Qidiruvni davom ettirish:
- Bu jarayon
left <= right
bo'lguncha takrorlanadi.
- Bu jarayon
-
Element topilmasa:
- Agar qidiruv oxiriga yetib, element topilmasa, qidiruv muvaffaqiyatsiz yakunlanadi va -1 yoki boshqa mos qiymat qaytariladi.
Python Dastur Kodi
Quyida binary search algoritmi Python dasturlash tilida qanday yozilishi ko'rsatilgan:
Kodingiz qanday ishlashini tushuntirish:
arr
: Qidirilayotgan saralangan ro'yxat.target
: Qidirilayotgan element.left
varight
: Ro'yxatning qidiruv boshlang'ich va oxirgi indekslari.middle
: Qidiruv uchun o'rta elementning indeksi.while
tsikli: Qidiruv jarayonini boshqaradi va qidiruv tugaguncha davom etadi.- Natija: Agar qidirilayotgan element ro'yxatda bo'lsa, uning indeksi qaytariladi, aks holda -1 qiymati qaytariladi.
Binary search algoritmining vaqt murakkabligi O(log n), ya'ni ro'yxatning kattaligi oshgan sari, qidiruv vaqtining o'sishi juda sekinlashadi. Shu sababli, bu algoritm katta ro'yxatlarda qidiruv amalga oshirishda juda samarali hisoblanadi.
Misol: Binary Search funksiyasi
Izohlar:
- Tartiblangan ro'yxat:
numbers
— bu tartiblangan ro'yxat, vatarget
— qidirilayotgan qiymat. - O'rta indeks: O'rta indeks
(left + right) // 2
formulasi orqali aniqlanadi. - Qidiruv jarayoni: Agar o'rta element qidirilayotgan qiymatga teng bo'lmasa, qidiruvni faqat bir yarimda davom ettiramiz, bu algoritmni juda samarali qiladi.
- Loop orqali qidiruv: Qidiruv
while
siklida takrorlanadi va natijada qiymat topilsa, uning indeksi, topilmasa,-1
qaytariladi.
Natija:
Agar target = 7
bo'lsa, bu qiymat 3-indeksda joylashgan va Qiymat 7 indeksi 3 da topildi.
deb chop etiladi.