• 21. Qiliruvning Interpoliyatsiya usulining S++ dasturlash tilidagi algoritmini yozing va ishlashini tushuntirib bering.
  • Binar qidiruv algoritmining asosiy funktsiyasini S++ dasturlash tilida yozing va uning ishlashini tushuntirib bering?




    Download 5,63 Mb.
    bet10/71
    Sana18.12.2023
    Hajmi5,63 Mb.
    #122750
    1   ...   6   7   8   9   10   11   12   13   ...   71
    Bog'liq
    Test gift and xml-fayllar.org

    20. Binar qidiruv algoritmining asosiy funktsiyasini S++ dasturlash tilida yozing va uning ishlashini tushuntirib bering?
    int Search_Binary (int arr[], int left, int right, int key) {
    int midd = 0;
    while (1) {
    midd = (left + right) / 2;
    if (key < arr[midd]) // agar qidirilayotgan element kichik bo’lsa
    right = midd - 1; // qidiruvning o’ng chegarasini aniqlash
    else if (key > arr[midd]) // agar qidirilayotgan element katta bo’lsa
    left = midd + 1; // qidiruvning chap chegarasini aniqlash
    else  // yoki (qiymat teng)
    return midd; // funktsiya ushbu yacheyka qiymatini qaytaradi
    if (left > right) // agar chegara mos kelmasa
    return -1; } }
          • Agar qidirilayotgan kalit qiymatli element o’rta qiymatdan kichik bo’lsa, algoritm o’rta qiymatdan katta elementlar joylashgan qismini tekshirmaydi. Qidiruvning o’ng tomondagi chegarasi (midd - 1) ga joylashadi. Hosil bo’lgan qism massivni yana 2 ga bo’lamiz.


          • Qidiruv kaliti yana o’rta elementga teng emas, katta. Endi qidiruvning chap chegarasi (midd + 1) ga joylashadi.


          • Uchinchi qadamda o’rta element 3 indeksli elementga teng:


          • (3 + 4) / 2 = 3. U kalitga teng. Algoritm o’z ishini yakunlaydi.





    21. Qiliruvning Interpoliyatsiya usulining S++ dasturlash tilidagi algoritmini yozing va ishlashini tushuntirib bering.
          • Interpolyatsiya — bu butun soha va qidirilayotgan qiymatga o’xshash elementlar joylashgan masofani hisoblash orqali qidiruv sohasini aniqlash usuli hisoblanadi. Bunga misol sifatida geometriyadagi o’xshash uchburchaklarni olish mumkin, bunda burchaklar qiymati bir xil, lekin proportsiyasi har xil bo’ladi. Interpolyatsiya usulida ham aynan shunday printsipdan foydalaniladi.


          • Qidiruv sohasi uzunligi soha boshidan kerakli songacha (masalan, markazdagi elementgacha) masofa hisoblanadi. Hisoblash element nomeri va qiymatlari bo’yicha amalga oshiriladi, undan keyin aniqlangan soha uzunligi bilan qiymatlar orasidagi uzunlik ko’paytiriladi va natijaga soha boshining qiymati qo’shilib, qidirilayotgan qiymat aniqlanadi.


    Yuqorida keltirilgan algoritmning C++ dagi ko’rinishi quyidagicha:


          • #include


          • using namespace std;


          • int main() {


          • int A[] ={ 1, 2, 4, 6, 7, 89, 123, 231, 1000, 1235 };


          • int x = 0; int a = 0; int b = 9;


          • int d = 1235; //izlanayotgan element


          • bool found;


          • for (found = false; (A[a] < d) && (A[b] > d) && !found; )


          • { x = a + ((d - A[a]) * (b - a)) / (A[b] - A[a]);


          • if (A[x] < d) a = x + 1;


          • else if (A[x] > d) b = x - 1;


          • else found = true; }


          • if (A[a] == d) cout << d << " element topildi indeksi " << a << " ga teng" << endl;


          • else if (A[b] == d) cout << d << " element topildi indeksi " << b << " ga teng" << endl;


          • else cout << "Topilmadi" << endl;


          • return 0; }





    Download 5,63 Mb.
    1   ...   6   7   8   9   10   11   12   13   ...   71




    Download 5,63 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Binar qidiruv algoritmining asosiy funktsiyasini S++ dasturlash tilida yozing va uning ishlashini tushuntirib bering?

    Download 5,63 Mb.