Binar axtarış alqoritmi

  Proqramlaşdırmada verilmiş bir qiymətin massiv daxilində olub-olmadığını, varsa neçənci mövqedə yer aldığını müəyyən etmək üçün bir sıra axtarış alqoritmlərindən istifadə olunur. Binar (ikili) axtarış belə alqoritmlərdən biridir, və o sıralanmış massivlərdə axtarış aparmaq üçün nəzərdə tutulmuşdur.

Alqoritmin izahı

  1. Əvvəlcə massivin orta elementi tapılır. Bunun üçün ilk və son elementlərin indeksləri dəyişənlərə mənsimsədilir, orda elementin indeksi isə hesablanır.
  2. Axtarılan qiymət orta elementin qiyməti ilə müqayisə edilir. Əgər axtarılan qiymət orta elementin qiymətindən böyükdürsə, aşağı sərhəd orta elementin bir element sağına sürüşdürülür və sonrakı axtarış massivin sağ tərəfində aparılır. Əgər axtarılan qiymət orta elementin qiymətindən kiçikdirsə, yuxarı sərhəd orta elementin bir element soluna sürüşdürülür və sonrakı axtarış massivin sol tərəfində aparılır. Əgər bərabərlik qeydə alınarsa, axtarış dayandırılır.
  3. Massivin orta elementi yenidən, amma bu dəfə seçilmiş yarı hissədə tapılır. Yuxarıdakı alqoritm cari yarı hissə üçün təkrarlanır.

Alqoritmin kodu

   Proqramda massivin elementləri təsadüfi qaydada verilmişdir. Bunun üçün random modulundan randint() funksiyası çağırılmışdır. Lakin istəsəniz massivin elementlərini klaviaturdan da daxil edə bilərsiniz. Massiv meydana gətirildikdən sonra sort() funksiyası vasitəsilə elementlər azdan çoxa doğru sıralanır.

from random import randint

mas = []
for i in range(15):
    mas.append(randint(1, 50))
mas.sort()
print(mas)
 
value = int(input())
mid = len(mas) // 2
low = 0
high = len(mas) - 1
 
while mas[mid] != value and low <= high:
    if value > mas[mid]:
        low = mid + 1
    else:
        high = mid - 1
    mid = (low + high) // 2
 
if low > high:
    print("Qiymət tapılmadı")
else:
    print("ID =", mid)

Proqram icrasının nümunələri:

[6, 9, 13, 16, 22, 23, 24, 28, 28, 29, 32, 34, 34, 35, 44]
48
Qiymət tapılmadı
[3, 11, 17, 20, 31, 33, 38, 38, 39, 42, 43, 44, 44, 46, 50]
20
ID = 3