• Ishdanmaqsad
  • Qo‘yilgan masala
  • Linear Search
  • Raqamli texnologiyalar vazirligi muhammad al xorazmiy nomidagi toshkent axborot texnologiyalari universiteti




    Download 1,86 Mb.
    bet2/6
    Sana17.11.2023
    Hajmi1,86 Mb.
    #100479
    1   2   3   4   5   6
    Bog'liq
    Маълумотлар тузилмаси ва алгоритми 1 deadline 1, 2, 3 erkinova2

    Amaliy bajarish uchun



    1. Massivdagi x elementiningjoylashganindeksinianiqlovchidasturalgoritminituzing.

    ``python
    massiv = [5, 7, 12, 3, 10, 8]


    x = 3
    indeks = massiv.index(x)
    print(f"{x} elementining indeksi: {indeks}")

    2 – Amaliymashg‘ulot: Ma’lumotlarniqidirishalgoritmlarivadasturlariniishlabchiqish, Ma’lumotlartuzilmalarinixeshlashalgoritmlariyordamidahosilqilish. Ma’lumotlarnisaralashalgoritmlarivadasturlariniishlabchiqish, Chiziqlima’lumotlartuzilmalariniqaytaishlashalgoritmlarivadasturlarinituzish.




    Ishdanmaqsad:Ushbuamaliyotishiningmaqsaditalabalarqandayqidirishusullarivaalgoritmlarimavjudliginivaularningsamaradorliklarinibaholashnio‘rganishlarikerak. Shu asosdaqidirishusullariniqiyosiytahlilqilishlari, C++ dasturlashtilidaqidirishbilanislashnivaulargaoiddasturlartuzishnio‘zlashtirishlarikerak.
    Qo‘yilgan masala:Talabalartopshiriqvariantigamosqidirishusuliyordamidamasalaniyechishdasturiniyaratishko‘nikmasigaegabo‘lishlarikerak.
    Ish tartibi:
    1.Tajribaishinazariyma’lumotlarinio‘rganish;
    2.Berilgantopshiriqningalgoritminiishlabchiqish;
    3. C++ dasturlashmuhitidadasturniyaratish;
    4. Natijalarnitekshirish;
    5.Hisobotnitayyorlashvatopshirish.
    Aytaylikbizgamassivberilgan:a[]={15, 23, 7, 45, 87, 16};
    Bizgaushbumassivdabironbir element boryokiyo‘qliginitekshiraoladigandasturtuzishshartiqo‘yilgan. Ushbumasalaniyechishdaengbirinchixayolgakeladiganusul - bumassivniketma-ketharbirelementinisolishtiribchiqishvabuusul:
    Chiziqliqidiruv - Linear Search deb ataladi, vabuusulkodiquyidagiko‘rinishda:
    #include
    usingnamespace std;
    int linearSearch(int array[], int size, int searchValue)
    { for(int i =0; i< size; i++)
    { if(searchValue == array[i])
    { returni; }}
    return-1;
    } int main()
    { int a[]={15, 23, 7, 45, 87, 16};
    int userValue;
    cout<<"Enter an integer: "<
    cin>>userValue;
    int result = linearSearch(a, 6, userValue);
    if(result >=0)
    { cout<<"The number "<< a[result]<<" was found at the"
    " element with index "<< result <
    } else {
    cout<<"The number "<
    Ko‘ribturganingizdek, funksiyamiz 2 ta parametrqabulqiladi, birinchisimassivnio‘zi, ikkinchisiesa biz qidirayotgan element. Agar unitopaolmasak, “-1”qiymatniqaytaramiz.
    Endi bundan optimal bo‘lganusul–binary (ikkilik)qidiruvniko‘ribchiqsak. Bu usulda ham funksiyaga 2 ta parametr, birinchisimassivo‘zikeyinesa biz qidirayotganelementniparametrsifatidaberiladi. Qidiruvesaquyidagicha: Dastlab biz massivboshivaoxirinio‘zimizuchuno‘zgaruvchilardabelgilabolamiz, meningkodimdabu left va right o‘zgaruvchilaridir:
    left := 0 right := len(a)
    so‘ngraquyidagishartbajarilganholda
    left< right
    quyidagiketma-ketoperatsiyalarniamalgaoshiramiz

    1. left va right index larimarkazidagielementnitopamiz (left + right) / 2

    2. topilganelementimiz biz qidirayotganelementgatengbo‘lsaunda mid elementnijavobsifatidaqaytaramiz

    3. agar a[mid] elementimiz biz qidirayotganelementdankichkinabo‘lsa biz left = mid deb belgilaymizvashunda a[mid:right] bo‘lagidaqidiruvdavometadi.

    4. agar a[mid] elementimiz biz qidirayotganelementdankattabo‘lsademak right = mid deb belgilaymizshundaqidiruv a[left:mid] bo‘lagidaqidiruvdavometadi.

    Shu zayldaqidiruv left < right shartbajarilmagunichadavometadi, agar bujarayonda biz qidirgan element topilmasa u xolda -1 javobqaytariladi, quyidadasturkodikeltirilgan:
    #include
    Using namespace std;
    int binarySearch(int array[], int size, int searchValue)
    { int low =0;
    int high = size -1;
    int mid;
    while(low <= high)
    { mid =(low + high)/2;
    if(searchValue == array[mid])
    { return mid;
    } elseif(searchValue> array[mid])
    { low = mid +1; }
    else
    { high = mid -1; } }
    return-1; }
    int main()
    { int a[]={12, 22, 34, 47, 55, 67, 82, 98};
    int userValue;
    cout<<"Enter an integer: "<
    cin>>userValue;
    int result = binarySearch(a, 8, userValue);
    if(result >=0)
    { cout<<"The number "<< a[result]<<" was found at the"
    " element with index "<< result <
    } else { cout<<"The number "<
    Bu usulbinarqidiruvniiterativusulideyiladi, shuningdekbualgoritmnirekursiyausulida ham yozishmumkin, rekursivusulnierinmasangizo‘zingizyozibko‘ring. Bitta urinishdako‘pchilikdasturchilarbunarsanito‘g‘riyozaolishmaydivabu normal holat, chunkixatoborjoydao‘zustidaishlashuchunimkoniyatbo‘ladi.
    Endi buqidiruvusullariniayrimjihatlarinikeltiribo‘tamiz:

    1. funksiyagaberilayotganmassiv Binar qidiruvuchunalbattao‘sishtartibidabo‘lishi talab qilinadi, chiziqliqidiruvuchunesaberilayotganmassivqaytartibdabo‘lishiniahamiyatiyo‘q

    2. chiziqliqidiruvdaelementlarnibittalabharbirinitekshiriladi, binardaesaalgoritmidankelibchiqibchiziqliganisbatananchakamsolishtirishamalibajariladi, chiziqliqidiruvningishlashvaqtiko‘pibilan O(n) vabinarqidiruvnikiko‘pibilan O(log n)


    Download 1,86 Mb.
    1   2   3   4   5   6




    Download 1,86 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Raqamli texnologiyalar vazirligi muhammad al xorazmiy nomidagi toshkent axborot texnologiyalari universiteti

    Download 1,86 Mb.