11
|
9
|
7
|
2
|
1-o‘tish
|
2
|
4
|
11
|
9
|
7
|
10
|
2-o‘tish
|
2
|
4
|
11
|
9
|
7
|
10
|
3-o‘tish
|
2
|
4
|
7
|
9
|
11
|
10
|
4-o‘tish
|
2
|
4
|
7
|
9
|
11
|
10
|
5-o‘tish
|
2
|
4
|
7
|
9
|
10
|
11
|
1-rasm. Tanlash usulida saralash
|
Algoritmning C++ da amalga oshirilish:
for( i = 0; i < N-1 ; i ++ ) {
nMin = i ;
for ( j = i+1; j < N; j ++)
if( A[j] < A[nMin] ) nMin = j;
if( nMin != i ) {
c = A[i];
A[i] = A[nMin];
A[nMin] = c;
}
}
Dasturning to ‘liq matni:
#include
int main()
{ int N, i , j, c, k, nMin;
int A[100];
cin>>N;
for (i=0; i>A[i];
for( i = 0; i < N-1 ; i ++ ) {
nMin = i ;
for ( j = i+1; j < N; j ++)
if( A[j] < A[nMin] ) nMin = j;
if( nMin != i ) {
c = A[i];
A[i] = A[nMin];
A[nMin] = c;
}
}
for (i = 0; i < N; i++) cout<}
в)Almashtirish usuli. Bu usul bilan saralashda tartibga solinadigan ketma-ketlik xotiraning dastlabki ketma-ketlik joylashgan erida tashkil etiladi. Saralash jarayonida qo’shni elementlar juftlab solishtiriladi. Agar solishtirilayotgan elementlar o’rtasidagi tartib buzilgan bo’lsa ularning joylari almashtiriladi. Bu almashtirish usuli ko’pincha pufakcha usuli deb ham ataladi, chunki eng kichik elementlar har bir o’tishda xuddi pufakchalarga o’xshab ketma-ketlikning birinchi pozisiyasi yo’nalishida «qalqib» chiqadi. 2-rasmda pufakcha usulida saralash namunasi keltirilgan. Birinchi o’tish davomida A1 va A2 elementlari solishtiriladi. Agar A2
Har bir keyingi o’tishda navbatdagi eng katta elementlar tegishlicha N - 1, N - 2 va hokazo pozisiyalarni egallaydi, natijada tartibga solingan massiv tuziladi.
Har bir o’tishdan so’ng ushbu o’tish davomida joy almashtirishlar bo’lgan-bo’lmaganligini tekshirib qo’yish mumkin. Agar joy almashtirishlar bo’lmagan bo’lsa, bu ketma-ketlik tartibga solinganligi va keyingi o’tishlar talab etilmasligini bildiradi. O’tishlar davomida almashtirishda ishtirok etadigan oxirgi element (2-rasmda bu elementlar qo’sh chiziq bilan chizilgan) qayd etiladi. Navbatdagi o’tishda tagiga chizilgan element va barcha undan keyingi elementlar solishtirishda ishtirok etmaydi, chunki shu pozisiyadan boshlab ketma-ketlik tartibga solingan bo’ladi.
i
|
A[i]
|
1-o‘tish
|
2-o‘tish
|
3-o‘tish
|
4-o‘tish
|
5-o‘tish
|
1
|
10
|
4
|
4
|
4
|
4
|
2
|
2
|
4
|
10
|
9
|
7
|
2
|
4
|
3
|
11
|
9
|
7
|
2
|
7
|
7
|
4
|
9
|
7
|
2
|
9
|
9
|
9
|
5
|
7
|
2
|
10
|
10
|
10
|
10
|
6
|
2
|
11
|
11
|
11
|
11
|
11
|
2-rasm. Almashtirish usulida saralash
|
Algoritmning C++ da amalga oshirilish:
for (i = 0; i < N-1; i ++){
for (j = N-2; j >= i ; j --)
if ( A[j] > A[j+1] ) {
с = A[j];
A[j] = A[j+1];
A[j+1] = с;
}
}
Dasturning to ‘liq matni:
#include
int main()
{
int N, i , j, c; int A[100]; cin>>N;
for (i=0; i>A[i];
for (i = 0; i < N-1; i ++){
for (j = N-2; j >= i ; j --)
if ( A[j] > A[j+1] ) {
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
}
for (i = 0; i < N; i++) cout<
return 0;
}
Do'stlaringiz bilan baham: |