Junior
Hansı algoritm logaritmik mürəkkəbliyə malikdir, yəni O(log n)?
sobes.tech Süni İntellekt
AI-dan cavab
İkili axtarış alqoritmi (və ya dikotom axtarış) logaritmik vaxt mürəkkəbliyinə malikdir O(log n).
İkili axtarış prinsipi:
- Tərtib olunmuş massiv (və ya siyahı) tələb edir.
- Hər addımda, axtarılan elementi cari axtarış diapazonunun ortasındakı elementlə müqayisə edir.
- Əgər elementlər uyğun gəlirsə, axtarış tamamlanır.
- Əgər axtarılan element ortadan kiçikdirsə, axtarış sol yarımda davam edir.
- Əgər axtarılan element ortadan böyükdürsə, axtarış sağ yarımda davam edir.
- Axtarış diapazonu hər addımda yarıya endirilir.
Python-da nümunə tətbiq:
# İkili axtarış funksiyası
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
mid_val = arr[mid]
if mid_val == target:
return mid # Element tapıldı, indeks qaytarılır
elif mid_val < target:
low = mid + 1 # Sol yarımı nəzərə almır
else:
high = mid - 1 # Sağ yarımı nəzərə almır
return -1 # Element tapılmadı
# İstifadə nümunəsi
# sıralanmış_liste = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
# məqsəd = 23
# nəticə = binary_search(sıralanmış_liste, məqsəd)
# if nəticə != -1:
# print(f"Element tapıldı indeksdə: {nəticə}")
# else:
# print("Element tapılmadı")
Logaritmik mürəkkəblik, əməliyyatların sayının giriş məlumatlarının ölçüsünün logaritmiyə uyğun olmasından irəli gəlir, çünki hər addımda axtarış sahəsi yarıya endirilir.