Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОМП. НАУКИ_1сем.doc
Скачиваний:
6
Добавлен:
05.11.2018
Размер:
902.14 Кб
Скачать
    1. Параметры оценки алгоритмов

  1. Время сортировки – основной параметр, характеризующий быстродействие алгоритма.

  2. Память  определенным алгоритмам требуется дополнительная память под временное хранение данных.

  3. Естественность поведения – эффективность метода на отсортированных или частично отсортированных данных.

  4. Устойчивость – устойчивая сортировка не меняет взаимного расположения равных элементов.

    1. Сортировка простым включением (простыми вставками) Принцип сортировки включением

В начале работы отсортированная часть массива– это один первый элемент, неотсортированная часть – все остальные элементы.

Повторять шаги 1-4 до исчерпания неотсортированной части:

  1. Взять первый элемент массива в неотсортированной части и сохранить его во вспомогательной переменной.

  2. Найти место в отсортированной части, вставка в которое взятого элемента не нарушит упорядоченности. Освободить место вставки, сдвинув на одну позицию вправо элементы, оказавшиеся правее места вставки.

  3. Вставить взятый элемент на освободившееся место.

  4. Сдвинуть границу отсортированной части на 1 вправо.

На каждом шаге отсортированная часть увеличивается на один элемент, а неотсортированная часть уменьшается на этот элемент. По массиву из N элементов будет сделан (N-1) проход.

i=2 3 / 1 9 2 5 – исходный массив

i=3 1 3 / 9 2 5

i=4 1 3 9 / 2 5

i=5 1 2 3 9 / 5

1 2 3 5 9 – отсортированный массив

const n=100; type vector=array[1..n] of integer;

procedure InsertSort(var A: vector); //Сортировка простым включением

//Линейный поиск места вставки с одновременным сдвигом элементов вправо

Var i,j,x : integer;

begin

for i:=2 to n do

begin

x:=A[i]; //Взять i-ый элемент массива

j:=i-1; //Поиск места вставки начинается с конца отсортированной части

while (j>=1) and (x<A[j]) do //Поиск элемента A[j], перед которым поставим x

begin

A[j+1] := A[j]; //Пересылка вправо очередного элемента

j:=j–1 //Переход к следующему элементу в отсортированной части

end;

A[j+1] := x //Вставка элемента x

end

end;

    1. Сортировка простым выбором Принцип сортировки выбором

В самом начале отсортированная часть массива пустая, неотсортированная часть – все элементы массива.

В неотсортированной части выбирается минимальный элемент и меняется местами с первым элементом неотсортированной части. Тем самым отсортированная часть увеличивается на этот элемент, а неотсортированная часть – уменьшается. По массиву из N элементов будет сделан (N-1) проход.

i=1 / 5 11 3 7 1 – исходный массив

i=2 1 / 11 3 7 5

i=3 1 3 / 11 7 5

i=4 1 3 5 / 7 11

i=5 1 3 5 7 / 11 – отсортированный массив

procedure SelectionSort(var A: vector); //Сортировка простым выбором

var i,j,imin,x : integer;

begin

for i:=1 to n-1 do

begin

imin:=i; //Взять i-ый элемент в качестве начального значения минимального

for j:=i+1 to n do

if A[j] < A[imin] then imin:= i; //Поиск минимального элемента

x:=A[i];

A[i]:=A[imin]; //Вставка минимального элемента на место i

A[imin]:=x //Пересылка элемента с места i на место минимального элемента

end

end;