Quicksort-dagi asosiy jarayon bo'lim() hisoblanadi. Bo'limlarning maqsadi - massiv va massivning x elementi pivot sifatida berilgan, x ni tartiblangan massivda o'zining to'g'ri joyiga qo'yish va barcha kichikroq elementlarni (x dan kichik) x dan oldin qo'yish va barcha katta elementlarni (kattaroq) qo'yishdir. x dan) x dan keyin. Bularning barchasi chiziqli vaqtda amalga oshirilishi kerak.
Pseudo-kod CLRS kitobida keltirilgan usulni qo'llaganidan keyin bo'linishning ko'plab usullari bo'lishi mumkin. Mantiq oddiy, biz eng chap elementdan boshlaymiz va kichikroq (yoki teng) elementlar indeksini i kabi kuzatib boramiz. Ketish paytida kichikroq elementni topsak, joriy elementni arr[i] bilan almashtiramiz. Aks holda, biz joriy elementni e'tiborsiz qoldiramiz.
Bu usul almashtirish usulidagi saralashga tegishli bo’lib uning asosini kalitlarni tanlangan kalitga nisbatan ajratish tashkil qiladi.
#include
#include
using namespace std;
int main(int args, char *argv[])
{
int n; cout<<"talabalar sonini kiriting=";cin>>n;
struct table{
int t;
char FIO[20];
} talaba[n];
cout<
for(int i=0;i
talaba[i].t=i+1;
cin>>talaba[i].FIO;
}
int l=0;
for(int i=0;i
for(int j=n-1;j>i;j--){
if (strcmp(talaba[j-1].FIO,talaba[j].FIO)==1){
l++;
table k=talaba[j];
talaba[j]=talaba[j-1];
talaba[j-1]=k;
}
}
}
for(int i=0;i
cout<<"| "<
cout<<"bu algoritm jadvalni "<
system("PAUSE");
Do'stlaringiz bilan baham: |