Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / лекции / Metody_sortirovki.ppt
Скачиваний:
22
Добавлен:
20.04.2015
Размер:
66.05 Кб
Скачать

Методы сортировки

Методы сортировки разбивают на три категории:

Сортировка с помощью включения

Сортировка с помощью выбора

Сортировка с помощью обмена

Прямые методы:

Сортировка с помощью прямого включения

Элементы последовательности делятся на две части:

Уже упорядоченные

Элементы, которые необходимо упорядочить

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

7

9

7 2 4 8 5

7 9

17

2

4 8 5

1 2 7

 

4 8 5

 

1 2 4 7

 

8 5

1 2 4 7 8

5

1 2 4

7

8

Прямые методы:

Сортировка с помощью прямого включения

 

void insertion_sort(int a[],int n)

1

{int i, j, x;

n-1

for(i =2; i <=n; i ++)

2

{ x:=a[i];a[0]=x; j=I;

3*(n-1)

3

while (x<a[j-1])

 

4{ a[j]=a[j-1]; j--; } 2+3+…..(n-1)

5 a[j]=x; (n-1)

}

} //end insertion_sort (3*(n-1)++(n-1))*(n-1)+(n+1)/2*(n-2)

Прямые методы:

Сортировка с помощью прямого включения

Улучшение метода: метод с двоичным включением:

Допустим необходимо вставить элемент ak.

Элементы a1, a2, … - уже упорядочены

Будем сравнивать элемент ak не со

всеми элементами, а сразу с серединой отрезка, до тех пор, пока не будет найдена точка включения

Прямые методы:

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

Метод основывается на сравнении двух соседних элементов и смене их местами при необходимости, до тех пор, пока все элементы не будут упорядочены

1 2 3 5 4 6 7 8 9

1 2 3 4 5 6 7 8 9

1 3 3 5 6 2 4 11

1 3 3 5 2 4 6 11

1 3 3 2 4 5 6 11

1 3 2 3 4 5 6 11

1 2 3 3 4 5 6 11

1 2 3 3 4 5 6 11

1 2 3 3 4 5 6 11

Прямые методы:

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

void Bubble_sort(int a[],int n)

{int i, j, x;

1 for(i =2; i <=n; i ++)

2 for(j=n;j<=i;j--)

3if (a[j-1]>a[j])

4{ x=a[j]; a[j]=a[j-1];a[j-1]=x;}

}//end Bubble_sort

Прямые методы:

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

Улучшение метода:

1.Запомнить были ли сделаны перестановки за последний проход массива

2.Запомнить место где были сделаны последние перестановки

3.Последовательно чередовать проход массива в прямом и обратном направлении(«шейкерная»)

Соседние файлы в папке лекции