Меню сайта
Форма входа
Категории раздела
Учебник по Паскалю [13] Практика [23]
примеры программ
Главная » Статьи » Pascal » Практика

Сортировка массива меняя местами соседние элементы массива

Задача:

  Сортировка массива c помощью рекурсивной функции, меняющей местами соседние элементы массива

Описание:

  В функции, которая упорядочивает массив имеется флаг, который сбрасывается, когда обнаруживается нарушение порядка. Затем производтся перестановка элементов и флаг восстанавливается в истину. Далее, вызовом этой же функции, проверяется следование всех элементов, и если все упорядочено, то функция завершается.


Код:



program smass; {сортировка массива по возрастанию}
uses crt;
const N = 20; {размер массива}
var A:Array[1..N] of integer; {Массив чисел}
 i, s: integer; {счетчики}
 flag: boolean; {флаг}

Procedure SMass;
 begin {пусть массив упорядочен}
 flag:= true; {установка флага в истину}
 for i:= 1 to N - 1 do {проверка массива--}
 if A[i] > A[i+1] then begin {если i-ый элемент больше (i+1)-го, то}
 s:= A[i]; {меняем их местами}
 A[i]:= A[i+1];
 A[i+1]:= s;
 flag:= false; {и флаг ставим в ложь, так как}
 end; {порядок был нарушен}
 {если были проведены перестановки, то заново проверяем массив, рекурсивно}
 if flag = false then SMass; {вызывая эту же процедуру}
 end;

Begin
 clrscr; {очистка экрана}
 Randomize;
 for i:= 1 to N do begin {задание массива случайными числами}
 A[i]:=Random(100); {--}
 Write(A[i], ' '); {вывод на экран}
 end;

 SMass; {вызов процедуры}

 Writeln;
 Writeln;
 for i:= 1 to N do {вывод упорядоченного массива}
 Write(A[i], ' '); {--}

readln;
End.


Категория: Практика | Добавил: nazgull (07.04.2013)
Просмотров: 1972 | Теги: исходный код, замена местами, Паскаль, код, элементы, Сортировка, примеры, массив | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки