Назад на содержание Массивы в Pascal


Общая информация

Ввод массива

Вывод массива

Поиск

Сортировка

Вычисление
колличественных

характеристик массива


Котрольные вопросы

Задания


Сортировка

Сортировка в массиве осуществляется следующим образом:

Под сортировкой понимают упорядочивание элементов. Возможны следующие виды сортировки:
- по возрастанию элементов (каждый следующий больше предыдущего);
- по убыванию элементов (каждый следующий меньше предыдущего);
- не убыванию элементов (каждый следующий больше или равен предыдущему);
- не возрастанию элементов (каждый следующий меньше или равен предыдущему).
Существует много алгоритмов сортировки. Разберём два из них: метод парных перестановок (пузырьковый) и метод прямого выбора.

Метод парных перестановок
Смысл этого метода заключается в сравнивании соседних элементов и, если нужно, их перестановке. Причём за один просмотр всех пар сортировка не достигает нужного результата. Приходится просматривать все пары элементов несколько раз.
Задача1. Отсортировать по возрастанию 20 элементов одномерного массива. Ввод массива осуществить любым способом.
Пусть массив называется M, счётчик элементов I, количество элементов в нём N, количество повторов для просмотра всех пар соседних элементов J, ячейка для обмена B. Формирование (ввод) и печать (вывод) массива рассматривались ранее. Поэтому подробно эти действия рассматриваться не будут.

Алгоритм. Программа.
  1. Объявить и сформировать массив.
  2. Отобразить исходный массив.
  3. Для каждого J от 1 до N-1 повторять:
  4. Для каждого I от 1 до N-1 повторять:
  5. Если M(I)>M(I+1) то:
  6. Присвоить B значение M(I)
  7. Присвоить M(I) значение M(I+1)
  8. Присвоить M(I+1) значение B
  9. Конец Если
  10. Конец Цикла по I
  11. Конец Цикла по J
  12. Отобразить отсортированый массив.
  13. Конец Алгоритма

program BubbleSort;
uses Crt;
const
    n = 20;
type
    TVector = array[1..n] of Real;
var
    M : TVector;
    B : Real;
    i,j : Integer;
begin
    ClrScr;
    Writeln ('Введите элементы массива:');
    for i:=1 to n do Read (M[i]);
    Readln;
{----------------------------}
    for j:=n downto 2 do
        for i:=1 to j-1 do
            if M[i] > M[i+1] then
            begin
                B := M[i];
                M[i] := M[i+1];
                M[i+1] := B
            end;
{----------------------------}
    Writeln ('Отсортированный массив:');
    for i:=1 to n do Write (M[i]:8:2);
    Writeln;
end.
Пример демонстрации работы сортировки методом пузырька:
На начало страницы
Hosted by uCoz