140
a[i]=a[j];
a[j]=t;
}
for(int j=0;j
cout<
cout<<‖\n‖;
return 0;
}
Kiritish uchun ma‘lumot
n=5
3 5 1 0 6
Dastur natijasi
0 1 3 5 6
Yuqorida keltirib o‗tilgan algoritm bilan massiv kamayish tartibida ham
saralash mumkin, faqatgina sikl ichidagi shartni almashtirish kerak. Kamayish
bo‗yicha tartiblash uchun C++ dasturlash tilida quyidagi dasturga e‘tibor bering.
#include
using namespace std;
int main()
{ int a[90];
int n,t; cout<<‖n=‖;
cin>>n;
for(int i=0;icin>>a[i];
for(int i=0;ifor(int j=i+1;jif(a[i]a[i]=a[j];
a[j]=t;
}
for(int j=0;jcout<return 0;
}
Kiritish uchun ma‘lumot
n=5
3 5 1 0 6
Dastur natijasi
6 5 3 1 0
142
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++)
{ x=a[i]; l=i-1; while((l>=1)&(a[l]>x)) { a[l+1]=a[l]; l=l-1; }
a[l+1]=x;
}
for(int j=1;j<=n;j++) cout<
system("pause");
return 0; }
O‗rin almashtirish usuli bilan saralash algoritmi:
Usulning asosiy prinsipi
katta elementlarning ro‗yxat uchiga otilib chiqadi va bu vaqtda kichik
qiymatlar pastga tushadi. Usulda ichma ich sikldan foydalaniladi birinchi n-1
marta, ikkinchi n-2 marta va oxiri bir marta har bir element o‘zidan keyingi
element bilan solishtiriladi.
Bunda kichik elementlar ro‗yxat oxiriga katta elementlar ro‗yxat boshiga
tushadi. Kuzatish mumkinki, har bir o‗tishda bir qancha elementlar siljiydi va
bitta elementgina o‗zining o‗rnini qat‘iy egallaydi.
Algoritmdagi jarayonni aniqlash uchun quyidagi masalaga e‘tibor bering.
A=[3; 5; 1; 0; 6] ketma ketlikni o‗rin almashtirish usuli bilan saralash algoritmi
bo‗yicha quyidagi almashtirishlar hosil bo‗ladi.
[3; 1; 5; 0; 6], [3; 1; 0; 5; 6] , [1; 3; 0; 5; 6] , [1; 0; 3; 5; 6], [0; 1; 3; 5; 6]
O‗rin almashtirish usuli bilan saralash algoritmining ko‗rinishi quyidagicha:
O‗rin almashtirish usuli C++ tilida quyidagi ko‗rinishda bo‗ladi.
Bosh
N,A[i],N1=N,x=1
X=1
1
0
N1--; x=0;
i=1;i<=N1;i++
A[i]>A[i+1]
t=A[i]; A[i]=A[i+1]; A[i+1]=t; x=1;
1
0
A
Tamom