11.3. Massiv elementlarini saralash bo‘yicha dasturlarni tuzish
Massivni saralashning bir necha usullari (algoritmlari) mavjud. Ulardan
quyidagi usullarni qarab chiqamiz:
- oddiy tanlash usuli;
- oddiy almashtirish usuli.
Tanlash usuli yordamida massivni o‗sish bo‗yicha saralash algoritmi
quyidagicha:
1.Massivning birinchi elementidan boshlab qarab chiqilib eng kichik element
topiladi.
2.Birinchi element bilan eng kichik element joylari almashtiriladi.
3.Ikkinchi elementidan boshlab qarab chiqilib eng kichik element topiladi.
4.Ikkinchi element bilan eng kichik element joylari almashtiriladi.
5.Bu protsess bitta oxirgi elementgacha takrorlanadi.
Bu algoritm dasturi quyidagicha bo‗ladi:
Program Sort;
Const n=5;
Var i, j, min, k, buf: Integer; a: Array[1..n] of Integer;
Begin
Writeln (‗Massivni saralash‘);
Write (n:3,‘ -ta massiv elementini kiriting‗);
For k:=1 to n Do Read(a[k]);
For i:=1 to n-1 Do
Begin { kichik elementni topish }
min:=i;
For j:=i+1 to n Do
Begin
If a[j]buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
For k:=1 to n Do Write (a[k],‘ ‗);
112
Writeln;
End;
End;
Writeln(`Massiv saralandi.`);
End.
Dastur natijasi:
Massivni saralash
5 ta massiv elementini kiriting
12 -3 56 47 10
Saralash
-3 12 56 47 10
-3 10 56 47 12
-3 10 12 47 56
-3 10 12 47 56
Massiv saralandi.
Almashtirish usuli yordamida massiv elementlarini o‗sib borishda saralash
algoritmi quyidagicha:
1.Massivning birinchi elementidan boshlab ketma-ket hamma qo‗shni
elementlar bir-biri bilan solishtirilib, agar birinchisi ikkinchisidan kichik bo‗lsa ular
joyi almashtirilib boriladi.
2. Bu protsess davomida kichik qiymatli elementlar massiv boshiga katta
elementlar esa oxiriga siljitilib boriladi. SHu sabab bu usul «puzirka» usuli ham
deyiladi.
3. Bu protsess massiv elementlar sonidan bitta kam marta takrorlanadi.
Masalan:
3 2 4 5 1 bunda 3 bilan 2 va 5 bilan 1 almashtiriladi.
2 3 4 1 5 bunda 4 bilan 1 almashtiriladi.
113
2 3 1 4 5 bunda 3 bilan 1 almashtiriladi.
2 1 3 4 5 bunda 2 bilan 1 almashtiriladi.
1 2 3 4 5
Bu algoritm dasturi quyidagicha bo‗ladi:
Program Sort;
Const n=5;
Var i,j,min,k,buf: Integer; a: Array[1..n] of Integer;
Begin
Writeln (‗Massivni puzirek (ko‗pikcha) usulida saralash‘);
Write (Size:3,‘ta massiv elementini kiriting‗);
For k:=1 to n Do Read(a[k]);
Writeln (‗Saralash‘);
For i:=1 to n-1 Do
Begin
For k:=1 to n-1 Do
Begin
If a[k]>a[k+1] then
Begin
buf:=a[k]; a[k]:=a[k+1]; a[k+1]:=buf;
End;
End;
For k:=1 to n Do Write (a[k],‘ ‗); Writeln;
End;
Writeln(‗Massiv saralandi.‘);
End.
Dastur natijasi:
Massivni puzirek usulida saralash
5 ta massiv elementini kiriting
114
3 2 4 1 5
Saralash
2 3 4 1 5
2 3 1 4 5
2 1 3 4 5
1 2 3 4 5
Massiv saralandi.
|