Algoritmlar va berilganlar strukturalari


Saralashning yaxshilangan usullari



Yüklə 0,65 Mb.
səhifə9/14
tarix12.06.2022
ölçüsü0,65 Mb.
#89387
1   ...   6   7   8   9   10   11   12   13   14
Algoritmlar va berilganlar strukturalari

38.Saralashning yaxshilangan usullari

  • <="" i=""><="" i=""><="" i="">Quiksort – tez saralash algoritmi
    Bu algoritm “bo'lib ol va egalik qil” tamoyilining yaqqol misolidir. Bu algotirm rekursiv bo'lib, o'rtacha N*log2N ta solishtirish natijasida saralaydi. Algoritm berilgan massivni saralash uchun uni 2 taga bo'lib oladi. Bo'lib olish uchun ixtiyoriy elementni tanlab undan 2 ta qismga ajratiladi. Lekin o'rtadagi elementni tanlab, massivning teng yarmidan 2 ga ajratgan ma'qul. Tanlangan kalit elementga nisbatan chapdagi va o'ngdagi har bir element solishtiriladi. Kalit elementdan kichiklar chapga, kattalar o'ng tomonga o'tkaziladi (6.3-rasm). Endi massivning har ikkala tomonida xuddi yuqoridagi amallar takrorlanadi. Ya'ni bu oraliqlarning o'rtasidagi elementlar kalit sifatida olinadi va h.k.


  • Misol uchun rasmdagi massivni saralash algoritmini ko'rib chiqamiz.

  • 1. Oraliq sifatida dan n-1 gacha bo'lgan massivning barcha elementlarini olamiz.

  • 2. Oraliq o'rtasidagi kalit elementni tanlaymiz, ya'ni


  • key=(+)/2, i=,

    j=.



  • Quicksort algoritmida o'rinlashtirish

  • 3. Chapdagi i-elementni key bilan solishtiramiz. Agar key kichik bo'lsa, keyingi qadamga o'tamiz. Aks holda i++ va shu qadamni takrorlaymiz.

  • 4. O'ngdagi j-element bilan key solishtiriladi. Agar key katta bo'lsa, keyingi qadamga o'tamiz, aks holda j-- va shu qadamni takrorlaymiz.

  • 5. i- va j-elementlarning o'rni almashtiriladi. Agar i<=j bo'lsa, 3-qadamga o'tiladi.
    Birinchi o'tishdan keyin tanlangan element o'zining joyiga kelib joylashadi.


  • 6. Endi shu ko'rilayotgan oraliqda key kalitning chap tomonida elementlar mavjud bo'lsa, ular ustida yuqoridagi amallarni bajarish lozim, ya'ni ko'riladigan oraliq dan key-1 gacha deb belgilanadi va 2-qadamga o'tiladi. Aks holda keyingi qadamga o'tiladi.

  • 7. Endi shu ko'rilayotgan oraliqda key kalitning o'ng tomonida elementlar mavjud bo'lsa, ular ustida yuqoridagi amallarni bajarish lozim, ya'ni ko'riladigan oraliq key+1 dan n-1 gacha deb belgilanadi va 2-qadamga o'tiladi. Aks holda algoritm tugaydi.
    Shu algoritmga misol ko'rib chiqamiz.


  • Misol: Talabalar ism-sharifi va tartib raqamidan iborat jadvalni quicksort algoritmi bilan saralang va nechta o'rinlashtirish amalga oshirilganini aniqlang.



  • Dastur kodi

    #include


    #include

    using namespace std;

    struct table{

    int t;


    string FIO;

    };

    int q=0;



    void qs(table *a,int first,int last){

    int i = first, j = last;table x =a[(first + last) / 2];

    do {

    while (a[i].FIO < x.FIO) i++;



    while (a[j].FIO > x.FIO) j--;

    if(i <= j) {

    if (i < j){ swap(a[i], a[j]);q++;}

    i++;


    j--;

    }

    } while (i <= j);



    if (i < last)

    qs(a,i,last);

    if (first < j)

    qs(a,first,j);

    }

    int main(int args, char *argv[])



    { int n;cout<<'n=';cin>>n;

    table talaba[n];

    for(int i=0;i<="" i="">

    talaba[i].t=i+1;

    cin>>talaba[i].FIO;

    }

    qs(talaba,0,n-1);



    for(int i=0;i<="" i="">

    cout<

    cout<<'quicksort algoritmi '<

    system('PAUSE');

    }


    Yüklə 0,65 Mb.

    Dostları ilə paylaş:
  • 1   ...   6   7   8   9   10   11   12   13   14




    Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
    rəhbərliyinə müraciət

        Ana səhifə