Байланысты: Э.А.Абдыкеримова.ИНФОРМАТИКАНЫҢ ТЕОРИЯЛЫҚ НЕГІЗДЕРІ
Тікелей таңдау кӛмегімен сҧрыптау әдісі Бҧл әдіс тӛмендегідей принцитпке негізделген:
1.
Кілті кіші элемент таңдалады;
2.
ол бірінші элемент а
1
-мен алмастырылады;
3.
осы процес қалған n-1 элементпен, n-2 элементпен және т.с.с.
қайталанып, бір ең ҥлкен элемент қалғанша жалғаса береді.
Бҧл әдіспен жҧмыс істеу процесі алдыңғы мысалдағы 8 кілтпен
жҥргізіледі.(2.2-сурет).
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.