- Код: Выделить всё
- const
 n=20;
 
 type
 tarray=array [1..20] of shortint;
 
 var
 arr:tarray;
 
 procedure CreateArray;
 var
 i:byte;
 begin
 for i:=1 to n do
 arr[i]:=random(61)-10;
 end;
 
 procedure PrintArray;
 var
 i:byte;
 begin
 for i:=1 to n do
 write(arr[i],' ');
 writeln; writeln;
 end;
 
 procedure SelectionSort;
 var
 l,r,t:byte;
 begin
 for l:=1 to n-1 do
 for r:=n downto l+1 do
 if arr[l]>arr[r] then begin
 t:=arr[l];
 arr[l]:=arr[r];
 arr[r]:=t;
 end;
 end;
 
 begin
 randomize;
 CreateArray;
 writeln('До сортировки : ');
 writeln;
 PrintArray;
 SelectionSort;
 writeln('После сортировки : ');
 writeln;
 PrintArray;
 readln;
 end.
Но препод не принял моё решение и сказал что это не та сортировка.
В книгах и на различных сайтах нашёл нужный алгоритм,но он не тот что был в книге.
Вот как выполнена сортировка выбором:
- Код: Выделить всё
- const
 n=20;
 type
 tarray=array [1..20] of shortint;
 var
 arr:tarray;
 procedure CreateArray;
 var
 i:byte;
 begin
 for i:=1 to n do
 arr[i]:=random(61)-10;
 end;
 procedure PrintArray;
 var
 i:byte;
 begin
 for i:=1 to n do
 write(arr[i],' ');
 writeln; writeln;
 end;
 procedure SelectionSort;
 var
 i,j,m,t:integer;
 begin
 for i:=1 to n-1 do begin
 m:=i;
 t:=arr[i];
 for j:=i+1 to n do
 if t>arr[j] then begin
 m:=j;
 t:=arr[j];
 end;
 arr[m]:=arr[i];
 arr[i]:=t;
 end;
 end;
 begin
 randomize;
 CreateArray;
 writeln('До сортировки : ');
 writeln;
 PrintArray;
 SelectionSort;
 writeln('После сортировки : ');
 writeln;
 PrintArray;
 readln;
 end.
Кто здесь прав и какой алгоритм верный?




