Байланысты: аза стан Республикасыны Білім ж не ылым министрлігі аза мем
Тікелей таңдау көмегімен сұрыптау әдісі Бұл әдіс төмендегідей принцитпке негізделген:
Кілті кіші элемент таңдалады;
ол бірінші элемент а1-мен алмастырылады;
осы процес қалған n-1 элементпен, n-2 элементпен және т.с.с. қайталанып, бір ең үлкен элемент қалғанша жалғаса береді.
Бұл әдіспен жұмыс істеу процесі алдыңғы мысалдағы 8 кілтпен жүргізіледі.(2.2-сурет).
Алғашқы кілттер 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[і];
c[і]:=r;
end;
{сұрыпталған массив элементтерін шығару}
wrіteln('suruptalgan massіv');
for і:=1 to n do
wrіteln('c[',і,']=',c[і]);
repeat untіl keypressed;
end.