Toshkent axborot texnologiyalari Unveristeti Dasturiy injinering fakulteti . 317—22 guruh talabasi . Azimov Murodjonning . Malumotlar tuzilmasi va algoritmlar . fanidan 2- amaliy topshiriq . yechimlari Fan o`qituchisi : Nurdullayev Alisher Niyatillayevich . 2-tajriba ishi. QIDIRUV USULLARINI TADQIQ QILISH Ishdan maqsad: talabalar berilgan tuzilmaning shakliga qarab biror kalitga mos elementni qidirishning optimal usulini qo’llashni o’rganishlari va qidiruv usullarining samaradorligini taqqoslashlari kerak. Qo’yilgan masala: topshiriq variantidagi masalani so’ralayotgan qidiruv usuli yordamida yechishning C++ tilidagi dasturini yaratish ko’nikmasiga ega bo’lish. Ish tartibi: Laboratoriya ishi nazariy ma’lumotlarini o’rganish; Berilgan topshiriqning algoritmini ishlab chiqish; C++ dasturlash muhitida dasturni yaratish; Natijalarni tekshirish; Hisobotni tayyorlash va topshirish. Ishni bajarish boyicha tartib raqam 4. 1-topshiriq yechilishi : 1. Ketma-ket va binar qidiruv usulidan foydalanib, A massivdan elementni va taqqoslashlar sonini toping. Ishni bajarish uchun avval binar qidiruv usuli qanday ishlashini tushinib olishga harakat qildib yani germaniya bayrog`i algoritmi Bizda mavjud bolgan massivni o`rtasini toppish va keyin taqqoslashni amalga oshirish uchun def kalit so`zi bilan funksiya hosil qildim .va binar qidirishni amalga oshirdim. def binar_qidiruv(arr, x): left = 0 right = len(arr) – 1 comparisons = 0 while left <= right: mid = (left + right) // 2 comparisons += 1 if arr[mid] == x: return arr[mid], comparisons elif arr[mid] < x: left = mid + 1 else: right = mid - 1 return None, comparisons A = [1, 2, 3, 4, 5, 6, 7, 8, 9] k=int(input("k--")) element, comparisons = binar_qidiruv(A, k) print("Element: ", element) print("Taqqoslashlar soni: ", comparisons) bizning massivda birinchi navbatda element borligi aniqlab u chop etadi keyin esa 5 o`rtadagi elementdan ajratib olib taqqoslaydi.va 1,2,3,4 ga yetganda 9 ga keladi va bu uning 4 taqqoslashi hisoblanadi. Kod python dasturlash tilida yozildi robotics lab ochiq manbalaridan foydalanildi. Kod ish vaziatidagi screenshot: 2-topshiriq yechilishi : Binar qidiruv usulida bu misol uchun ham algoritm yaratib olamiz .biz qidirayotgan har bitta elementni alohida qidirib taqqoslashlar soni bilan chop etamiz. def binar_qidiruv(arr, x): left = 0 right = len(arr) - 1 comparisons = 0 while left <= right: mid = (left + right) // 2 comparisons += 1 if arr[mid] == x: return arr[mid], comparisons elif arr[mid] < x: left = mid + 1 else: right = mid - 1 return None, comparisons # Massivni o'rnating A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Qidiriladigan elementlar qidiriladigan_elementlar = [4, 8, 12] for element in qidiriladigan_elementlar: found_element, comparisons = binar_qidiruv(A, element) if found_element is None: print(f"{element} topilmadi") else: print(f"{element} topildi: {found_element}") print(f"Taqqoslashlar soni: {comparisons}") print() Bu kodda binar_qidiruv funksiyasiga comparisons deb nomlangan o'zgaruvchi qo'shilgan. Bu o'zgaruvchi har qanday qidiruv jarayonida taqqoslashlar sonini saqlaydi. Dastur natijasida har bir qidiriladigan element uchun topilgan element va taqqoslashlar soni chiqadi. Kod ishlash jarayonidan screenshot: python dasturlash tilida qilindi .barcha funcsiya va methodlar coplier tomonidan genratsiya qilinadi .