Жиымның ең кіші элементі анықталады да, ол бірінші элементпен орын ауыстырады. Қалған элементтермен де осы тәсіл қайталанады.
int i, min, n_min, j; for(i=0;i
{
min=a[i];n_min=i; // минимумды іздеу
for(j=i+1;jif(a[j]{ min=a[j];n_min=j; }
a[n_min]=a[i]; //алмастыру
a[i]=min;}
Жай енгізу (кірістіру) тәсілімен сұрыптау
Жиым элементтері екіге – бастапқы тізбекке және дайын тізбекке бөлінеді.
Әрбір адымда I=2 нөмірінен бастап, бастапқы берілген тізбектен I-ші элемент алынады да, ол дайын тізбектің керекті жеріне орналастырылады. Мұнан кейін I-ге 1 қосылады да, сол әрекеттер қайталанады.
Керекті орынды іздеу кезінде оң жақтағы келесі элементпен орын ауыстыру қарастырылады, яғни таңдалып алынған элемент сұрыпталғандардың J=I-1 нөмірінен басталатын кезекті элементімен салыстырылады. Егер таңдалып алынған элемент a[I]-ден артық болса, онда ол сұрыпталғандар ішіне қосылады, әйтпесе a[J] бір орынға ығысады да, таңдалған элемент сұрыпталғандар ішіндегі келесі элементпен салыстырылады. Керекті орынды іздеу әрекеті екі жағдайда:
егер a[J]>a[I] болатын элемент табылса;
дайын тізбектің сол жақ шетіне жеткен кезде аяқталады. Мысалы:
int i,j,x; for(i=1;i
{ x=a[i];//ауысатын элементті есте сақтау
j=i-1;
while(x=0) //керекті орынды іздеу
{
a[j+1]=a[j]$ //оңға жылжыту
j--;
}
a[j+1]=x;//элементті кірістіріп қою
}
Мұнда ең соңғыдан бастап, екі элемент салыстырылады да, қажет болса, орындары алмастырылады. Осындай әрекет нәтижесінде ең кіші элемент жиымның ең сол жақ шетіне ығысады. Қалған жиым элементтері үшін де осы процесс қайталанады.
for(int i=1;i=i;j--)
if(a[j]{int r=a[j];a[j]=a[j-1];a[j-1]=r;}
Достарыңызбен бөлісу: |