Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
12.05.2015
Размер:
4.21 Mб
Скачать

Реализация StraightSelection

Сортировка выбором

for i:= 1 to n-1 do

 

begin

 

min_ind:= i;

 

for j:= i+1 to n do

 

if a[j]<=a[min_ind] then

 

min_ind:= j;

 

if min_ind<>i then

 

Begin

 

x:= a[i];

 

a[i]:= a[min_ind];

 

a[min_ind]:= x;

 

end;

 

end;

21

Сортировка выбором

void SelectionSort (int k,int x[max]) { int i,j,min,temp;

for (i=0;i<k-1;i++) {

//устанавливаем начальное значение минимального индекса

min=i;

//находим минимальный индекс элемента for (j=i+1;j<k;j++){

if (x[j]<x[min]) min=j;

//меняем значения местами

}

temp=x[i];

x[i]=x[min];

x[min]=temp;

}

}

22

 

 

 

23

Эффективность алгоритма

В лучшем случае (если исходная последовательность уже упорядочена), алгоритм произведет (N-1)*(N+2)/2 сравнений и 0 пересылок данных. В остальных же случаях количество сравнений останется прежним, а вот количество пересылок элементов массива будет равным 3*(N-1).

Таким образом, алгоритм имеет квадратичную сложность (~N2) по сравнениям и линейную (~N) - по пересылкам.

24

Сортировка простыми

обменамиАлгоритм попарногоBubbleSortсравнения элементов("пузырька") массива в литературе часто называют "методом пузырька", проводя аналогию с пузырьком, поднимающимся со дна бокала с газированной водой. По мере всплывания пузырек сталкивается с другими пузырьками и, сливаясь с ними, увеличивается в объеме. Чтобы аналогия стала очевидной, нужно считать, что элементы массива расположены вертикально друг над другом, и их нужно так упорядочить, чтобы они увеличивались сверху вниз.

25

Сортировка простыми

обменами BubbleSort

26

Сортировка простыми обменами

BubbleSort

Алгоритм состоит в повторяющихся проходах по сортируемому массиву.

За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов.

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

"всплывает" до нужной позиции

27

28

Сортировка простыми обменами BubbleSort

Type

item = Record

key : Integer;

……… {описание других компонент} End;

Const N=20;

Type

index = 0..n;

Var a : Array [1..n] Of item;

29

Сортировка простыми обменами

BubbleSort

Procedure BubbleSort;

Var

 

i,j

: index;

x

: item;

Begin

For i:=2 To n Do

For j:=n DownTo i Do

If a[j–1].key > a[j].key Then Begin

x:=a[j–1];

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

a[j]:=x

End;

End;

30