Tatu samarqand filiali


 Quiksort – tez saralash algoritmi



Yüklə 487,85 Kb.
Pdf görüntüsü
səhifə24/31
tarix07.02.2022
ölçüsü487,85 Kb.
#52226
1   ...   20   21   22   23   24   25   26   27   ...   31
algoritmga kirish fanidan laboratoriya mashgulotlari boyicha uslubiy kursatma

3.6.  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 0 dan n-1 gacha bo’lgan massivning barcha elementlarini olamiz.  

2.Oraliq o’rtasidagi kalit elementni tanlaymiz, ya’ni key = ( < oraliq_boshi > + < 

oraliq_oxiri > ) / 2,  i=, j=

 

 



3.3-rasm. 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 0 

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

              talaba[i].t=i+1;  

              cin>>talaba[i].FIO;  

              }  

      qs(talaba,0,n-1);  

             for(int i=0;i

                  cout<

                  cout<<"quicksort  algoritmi  "<

saraladi\n";  

  system("PAUSE");  

}  


Dastur natijasi:  

talabalar sonini kiriting=5  

5 ta talabalar FIO sini kiriting  

Farhod   

Asror  

Sobir   



Bobur   

Vali   


| 2 | Asror  |  

| 4 | Bobur |  

| 1 | Farhod |  

| 3 | Sobir |  

| 5 | Vali |  

bu algoritm jadvalni 3 ta o‘rinlashtirishda saraladi  




Yüklə 487,85 Kb.

Dostları ilə paylaş:
1   ...   20   21   22   23   24   25   26   27   ...   31




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin