Помогите,пожалуйста,очень срочно! Написать программу организующую сортировку выбора....

0 голосов
41 просмотров

Помогите,пожалуйста,очень срочно! Написать программу организующую сортировку выбора. Процедуру использовать только для сортировки!


Информатика (46 баллов) | 41 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Procedure Sort(arr : array of integer);
var
  i, j, temp, len, min : integer;
begin
  len := length(arr);

  for j := 0 to len - 2 do
  begin
    min := j;
 
    for i := j + 1 to len - 1 do
      if arr[i] < arr[min] then
        min := i;

    if min > j then
    begin
      temp := arr[j];
      arr[j] := arr[min];
      arr[min] := temp;
    end;
  end;
end;

const
  N = 10; // Количество элементов массива
  Max = 100; // Максимальное число в массиве
var
  arr : array of integer;
  i : integer;
begin
  //Устанавливаем длину массива
  SetLength(arr, N);

  for i := 0 to N - 1 do
    arr[i] := random(Max);
 
  //Выводим исходный массив
  for i := 0 to N - 1 do
    write(arr[i], ' ');
  writeln();

  Sort(arr);

  //Выводим отсортированный массива
  for i := 0 to N - 1 do
    write(arr[i], ' ');
  writeln();
end.

(918 баллов)
0 голосов

Const n = 10;
type arr=array[1..n] of byte;
procedure sort(var a:arr);
var i, j, max, imax:integer;
begin
j := n;
while j > 1 do begin
    max := a[1];
    imax := 1;
    for i := 2 to j do
        if a[i] > max then begin
            max := a[i];
            imax := i
        end;
    a[imax] := a[j];
    a[j] := max;
    j := j - 1
 end;
end;
var
a: arr; i: byte;
 
begin
Randomize;
writeln('Исходный массив:');
for i := 1 to n do 
  begin
  a[i] := random(256);
  write(a[i]:4)
  end;
writeln;
sort(a);
writeln('Отсортированный массив:');
for i := 1 to n do write(a[i]:4);
writeln;
end.

Пример:
Исходный массив:
 119 239 156 143  34 184  93  19 218 120
Отсортированный массив:
  19  34  93 119 120 143 156 184 218 239

(194k баллов)