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
Ishni bajarishga namuna
Masalaning qo„yilishi – tabalarning ism, familiyalarini optimallashtirilgan
pufaksimon usuli bilan tartibga keltirish dasturini tuzamiz va saralash nechta o„rin almashtirish bilan amalga oshirilganini aniqlaymiz.
Algoritm
1. Jadvalga talabalar ism-sharifini kiritamiz.
2. Jadvaldagi 1-elementni olamiz, i=0.
3. Jadvaldagi n-1 oxirgi elementdan to i-elementgacha barcha elementni FIO
maydonini o„zidan oldin turgan element FIO maydoni bilan solishtiramiz. Agar
zarur bo„lsa, o„rin almashtiramiz va o„rin almashtirishlar hisoblagichi l ning
qiymatini bittaga oshiramiz, ya‟ni l++.
4. Agar ibo„lsa, i++ va 3-qadamga o„tamiz.
5. Natijaviy saralangan massivni ekranga chiqaramiz.
Dastur kodi
#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 "<
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 10 ta solishtirishda saraladi
Birlashtirish orqali saralash
Javob: B irlashtirish orqali saralash(Merge Sort) algoritmi.
Bu algoritm Jon fon Neyman tamonidan 1946 yilda taklif qilingan.
Jon Fon Neyman Vengriyalik olim bo’lib matematika, kvant fizikasi, funksional analiz, to’plamlar nazariyasi, ekonomika, informatika kabi fanlarga munosib hissa qo’shgan.
Bo’lib tashla va hukmronlik qil metodi.
Algoritmlarni qurishning asosiy metodlaridan biri.
Murakkab masalani yechish uchun, uni oddiyroq bo’laklarga ajratish kerak.
Massivni ham huddi shunday saralash mumkin:
Uni ikkita bo’lakga ajratamiz.
Bo’laklarni alohida saralaymiz.
Saralangan massivlarni birlashtiramiz.
Saralangan massivlarni birlashtirish.
Ikkita saralangan massiv berilgan. Ularni birlashtirib shunday massiv hosil qilish qilish kerakki, u yana saralangan bo’lsin.
Xar safar hali ikki massivning hali ko’rilmagan qismlaridagi birinchi ikki elementni taqqoslaymiz. Ulardan kichigini olamiz. Bu jarayonni toki bitta massivning chetigacha chiqmagunga qadar davom ettiramiz. Ortib qolgan massiv elementlarini esa to’g’ridan to’g’ri natijaviy massiv iziga berilgan tartibda joylashtirib qo’yamiz.
Masalan quyida ikki saralangan massivlarni birlashtirib, saralangan bitta massiv hosil qilishni ko’rib chiqaylik:
Do'stlaringiz bilan baham: |