Структура данных - массив. Часть 1 - 29 стр.

UptoLike

29
Идея метода заключается в следующем: с помощью операции обмена
максимальный элемент сдвигается на последнее место массива. Индекс по-
следнего элемента следует менять от n до 2.
Описание алгоритма.
for j:=n downto 2 do
{ сдвиг максимального элемента на j-тое место}
for i:=1 to j-1 do
if a[i]>a[i+1] then
begin
`x:=a[i]; a[i]:=a[i+1]; a[i+1]:=x
end;
При некотором
j<n может наступить ситуация, что a[i]a[i+1]
для всех 1i<j. Это значит, что массив уже отсортирован и продолжать
выполнять внешний циклический процесс не нужно. Поэтому заголовок
внешнего цикла сформулируем так: пока осуществляется обмен во внутрен-
нем цикле, продолжать работу, иначе выйти из цикла.
Для реализации этого алгоритма введем булевскую переменную
flag. Начальное значение переменной flag:= true. Перед внутрен-
ним циклом переменная должна изменить значение
flag:=false. Если
обмен выполнится, то переменная должна получить значение
true для
продолжения процесса, иначе произойдет выход из внешнего цикла, так как
flag=false.
Опишем рассмотренный алгоритм в виде процедуры Sort_Swap.
const n_max=20;
type Tip = integer;
vect = array[1..n_max] of Tip;
Procedure Sort_Swap( n:integer; var a:vect);