Сортировка выбором

Задача

Требуется отсортировать массив по возрастанию.

Решение

 

Для этого можно воспользоваться следующим алгоритмом.

  1. Найти максимальный элемент (max) в массиве (arr).
  2. Поместить его на последнее место (j).
  3. Элемент, находившийся в конце массива переместить на место, где прежде находился max.
  4. Уменьшить просматриваемую область массива на единицу (j – 1).
  5. Снова найти максимальный элемент в оставшейся области.
  6. Поместить его в конец просматриваемой области массива.
  7. и т.д.

Программа на языке Паскаль: 

 

const n = 10;
 
var
    arr: array[1..n] of byte;
    max, id_max, i, j: byte;
 
begin
    randomize;
    for i := 1 to n do begin
        arr[i] := random(256);
        write(arr[i]:4)
    end;
    writeln;
 
    j := n;
 
    while j > 1 do begin
        max := arr[1];
        id_max := 1;
        for i := 2 to j do
            if arr[i] > max then begin
                max := arr[i];
                id_max := i
            end;
        arr[id_max] := arr[j];
        arr[j] := max;
        j := j - 1
    end;
 
    for i := 1 to n do
        write(arr[i]:4);
 
readln
end.

 

Примечания: 

Присваивание длины массива переменной j не обязательно. Вместо j в цикле while можно было использовать само n. Однако в конце мы выводим на экран отсортированный массив, поэтому требуется сохранить исходное значение n.

 

Тема

Одномерные массивы

Уровень

Сложные задачи

Комментарии

n это константа, как вы его хотели изменять?

"поэтому требуется сохранить исходное значение n."

Добавить комментарий