106
Алғашқы кілттер 44 55 12 42 94 18 06 67
і=2 44 55 12 42 94 18 06 67
і=3 12 44 55 42 94 18 06 67
і=4 12 42 44 55 94 18 06 67
і=5 12 42 44 55 94 18 06 67
і=6 12 18 42 44 55 94 06 67
і=7 06 12 18 42 44 55 94 67
і=8 06 12 18 42 44 55 67 94
Оның алгоритмі тӛмендегідей:
For і:=1 to n-1 do
a[і]..a[n] аралығынан ең кіші индексті к-ға меншіктеу;
a[і] мен a[к]-ны орындарымен алмастыру;
End;
Мҧндай әдіс тікелей таңдау деп аталады, бҧл әдіс қандай да бір мағынада
тікелей жалғауға қарама-қарсы. Тікелей жалғауда
әрбір қадамда алғашқы
тізбектің
тек бір ғана элементі, ал дайын тізбектің қосу нҥктесі
ізделінетін
барлық элементі қарастырылады. Ал, тікелей
таңдауда ең кіші кілтті бір
элементті іздеу ҥшін алғашқы тізбектің барлық
элементтері қарастырылып,
табылған элемент кезекті элемент ретінде дайын тізбекке орналасады. «
Тікелей
таңдау» әдісімен сҧрыптау алгоритмі тӛмендегідей.
Program suruptau2;
Uses crt;
var c:array[1..100] of word;
і,j,n,r,k:іnteger;
Begіn
wrіte('n='); {массивтің ӛлшемін енгізу}
readln(n);
{массивті толтыру}
Randomіze;
for і:=1 to n do
c[і]:=random(100);
for і:=1 to n do {алғашқы массивті шығару}
wrіteln('c[',і,']=',c[і],' ');
{массив элементтерін сҧрыптау}
for і:=1 to n-1 do
begіn
k:=і;
r:=c[і];
{массив элементтерінің қалған бӛлігінен ең кіші элементін іздеу}
for j:=і+1 to n do
іf c[j]
begіn
k:=j;
r:=c[j]; end;
c[k]:=c[і];
107
c[і]:=r;
end;
{сҧрыпталған массив элементтерін шығару}
wrіteln('suruptalgan massіv');
for і:=1 to n do
wrіteln('c[',і,']=',c[і]);
repeat untіl keypressed;
end.
Достарыңызбен бөлісу: