Сортировка по возрастанию

Сортировка по возрастанию


Задача

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


Решение


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


1.        Найти максимальный элемент (max) в массиве (arr).

2.        Поместить его на последнее место (j).

3.        Элемент, находившийся в конце массива переместить на место, где прежде находился max.

4.        Уменьшить просматриваемую область массива на единицу (j - 1).

5.        Снова найти максимальный элемент в оставшейся области.

6.        Поместить его в конец просматриваемой области массива.

7.        и т.д.


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


Program PoiskMax;

Uses crt;

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.