Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Массивы.doc
Скачиваний:
1
Добавлен:
10.11.2018
Размер:
119.3 Кб
Скачать

2.1.1. Сортировка вставкой

Принцип метода:

Массив разделяется на две части: отсортированную и неотсортированную. Элементы из неотсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушать в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве неотсортированной части – все остальные элементы.

Таким образом, алгоритм будет состоять из n-1-го прохода (n – размерность массива), каждый из которых будет включать четыре действия:

  1. взятие очередного i-го неотсортированного элемента и сохранение его в дополнительной переменной;

  2. поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов;

  3. сдвиг элементов массива от i-1 до j-1-го вправо, чтобы освободить найденную позицию вставки;

  4. вставка взятого элемента в найденную j-ю позицию.

Пример:

Алгоритм метода сортировки вставкой т екст программы

program Sort; {vstavka}

uses

crt;

const

n = 20;

type

Mass = array [1..n] of Integer;

var

i, j, k,

temp : Integer;

a : Mass;

begin

clrscr;

randomize;

for i:=1 to n do

begin

A[i]:=random(1000);

write(a[i]:3, ' ');

end;

for i:=2 to n do

begin

temp := a[i];

j:=1;

while(temp>a[j]) do

j := j+1;

for k:=i-1 downto j do

a[k+1] := a[k];

a[j] := temp;

end;

writeln;

for i:=1 to n do

write(a[i]:3, ' ');

readln;

end.

2.1.2. Сортировка обменом («пузырьковая» сортировка)

Принцип метода:

Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива.

После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент («всплыл» первый «пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-го элемента. И так далее. Всего требуется n-1 проход.

Пример:

Расположим массив сверху вниз, от нулевого элемента - к последнему.

Шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами.

После нулевого прохода по массиву «вверху» оказывается самый «легкий» элемент - отсюда аналогия с пузырьком. Следующий проход делается до второго сверху элемента, таким образом, второй по величине элемент поднимается на правильную позицию...

Делаем проходы по все уменьшающейся нижней части массива до тех пор, пока в ней не останется только один элемент. На этом сортировка заканчивается, так как последовательность упорядочена по возрастанию.

Алгоритм сортировки методов пузырька Текст программы

program Sort; {puzurek}

uses

crt;

const

n = 20;

type

Mass = array [1..n] of Integer;

var

i, j,

temp : Integer;

A : Mass;

begin

clrscr;

randomize;

for i:=1 to n do

begin

A[i]:=random(1000);

write(a[i]:3, ' ');

end;

for i:=n downto 2 do

for j:=1 to i-1 do

if a[j]>a[j+1] then

begin

temp := a[j];

a[j] := a[j+1];

a[j+1] := temp;

end;

writeln;

for i:=1 to n do

write(a[i]:3, ' ');

readln;

end.