• Algoritmining dasturiy tadbiqi
  • Ajrat va xukmronlik qil” tamoyilidagi algoritmlar sinfi




    Download 420,02 Kb.
    bet3/4
    Sana15.05.2024
    Hajmi420,02 Kb.
    #235184
    1   2   3   4
    Algoritm qadamlari


    Ikkilik qidirish algoritmi to'g'ri ishlashi uchun massiv saralangan bo'lishi shart! Bizda n ta elementli saralangan massiv bor va biz undan elementni qidirmoqdamiz. Biz qidirish chegarasini belgilash uchun l (left) va r (right) ko'rsatkichlardan foydalanamiz. Ular massiv indekslarini ko'rsatib turadi. mid o'zgaruvchi bizda qidirilayotgan sohaning o'rtadagi elementi indeksini ko'rsatadi

    1. Avvaliga l = 0 va r=n-1 bo'ladi (butun boshli massiv)

    2. O'rtadagi element indeksi hisoblanadi: mid = (l + r)/2;

    3. O'rtadagi element indeksi bilan qidirilayotgan son solishtirib ko'riladi

    4. Agar son mos kelsa, algoritm shu joyida to'xtaydi.

    5. Agar o'rtadagi sondan katta bo'lsa, left ko'rsatkichni o'rtadan bitta keyingi elementga suramiz: l=mid + 1;

    6. Agar o'rtadagi sondan kichik bo'lsa, right ko'rsatkichni o'rtadan bitta oldingi elementga suramiz: r=mid — 1;

    7. 2-qadamga qaytiladi.

    Ikkilik qidirish algoritmi har bir qadamda ni ikki baravarga kamaytirgani uchun algoritm ishlash tezligi O(logn) hisoblanadi. Solishtirish uchun Facebook misolidagi 1 mlrd login ichidan ikkilik qidirish algoritmi 30 ta (!) qadam bilan topishi mumkin. Oddiy qidirishdan tashqari bu algoritmni yana boshqa juda ko'p joyda qo'llash mumkin.

    Algoritmining dasturiy tadbiqi
    Aytaylik bizga tartiblangan n ta elementdan iborat arr[ ] massiv berilgan bo'lsin, va berilgan x ni arr[ ] ichidan qidirish funksiyasini tuzish sharti qo'yilsin. Bu holatda eng oson yo'l sifatida chiziqli qidiruvni misol keltirish mumkin. Ammo bu usulning vaqt davomiyligi O(n) ni tashkil qiladi. Xuddi shu vazifa uchun biz binar qidirish algoritmini ishlatsak bo'ladi(6-rasm).

    6-rasm. Ikkilik qidirish algoritmining ishlash.

    Qiyinlik darajasi: 5/10.


    Eng zo'r ko'rsatkichi(vaqt): O(1).
    Eng yomon ko'rsatkichi(vaqt): O(log n).
    O'rtacha ko'rsatkichi(vaqt): O( log n).
    Binar qidiruvning asosiy g'oyalaridan biri ketma-ket ikkiga bo'lishga asoslanadi, ya'ni berilgan x ni massivning o'rtadagi elementi bilan solishtiradi, agar katta bo'lsa oxiri va o'rtasi orasidagi massivni oladi, agar kichkina bo'lsa boshi va o'rtasi orasidagi massivni oladi, va har safar shu jarayon takrorlanib boradi toki x element solishtirilayotgan massivning elementga teng bo'lgunicha yoki massivning elementlari qolmaguncha.
    Masalan(7-rasm).:

    7-rasm. Ikkilik qidirish algoritmining sxemasi.
    Biz bitta taqqoslashdan so'ng massivning yarim elementlarini hisobga olmasak ham bo'ladi.
    1. x ni o'rtadagi element bilan solishtiramiz.
    2. Agar rost bo'lsa, o'rtadagi elementni qaytaramiz.
    3. Agar x katta bo'lsa, x ni massivni o'ng yarmini ichidan qidiramiz, yuqoridagi ketma-ketlikni bajargan holda.
    4. Aks holda chap yarmi bilan binar qidiruvni amalga oshiramiz.
    Quyida Binar qidiruvning rekursiya orqali amalga oshiramiz.
    // C++ tilida rekursiyali Binar Qidiruv
    #include
    // Rekursiyali qidiruv funksiyasi. U massivdan
    // x qaysi o'rinda turganini qaytaradi,
    // yoki -1

    Download 420,02 Kb.
    1   2   3   4




    Download 420,02 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ajrat va xukmronlik qil” tamoyilidagi algoritmlar sinfi

    Download 420,02 Kb.