Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание по Алгоритмизации 2013.doc
Скачиваний:
17
Добавлен:
28.03.2015
Размер:
2.27 Mб
Скачать

6.5.4 Сортировка «методом пузырька»

Начиная с конца массива сравниваются два соседних элемента (a[n] и a[n-1]). Если выполняется условие a[n-1] > a[n], то значения элементов меняются местами. Процесс продолжается для a[n-1] и a[n-2] и т.д., пока не будет произведено сравнение a[2] и a[1]. Понятно, что после этого на месте a[1] окажется элемент массива с наименьшим значением. На втором шаге процесс повторяется, но последними сравниваются a[3] и a[2]. И так далее. На последнем шаге будут сравниваться только текущие значения a[n] и a[n-1].

Массив: 23, 8, 5, 65, 47, 34, 1, 6

Шаг 1: i1= 23, 8, 5, 65, 47, 34, 1, 6

Шаг 2: i2= 23, 8, 5, 65, 47, 34, 1, 6

5, 8, 23, 65, 47, 1, 34, 6

5, 8, 23, 65, 1, 47, 34, 6

5, 8, 23, 1, 65, 47, 34, 6

5, 8, 1, 23, 65, 47, 34, 6

5, 1, 8, 23, 65, 47, 34, 6

1, 5, 8, 23, 65, 47, 34, 6

Шаг 3: i3= 1, 5, 8, 23, 65, 47, 34, 6

1, 5, 8, 23, 65, 47, 6, 34

1, 5, 8, 23, 65, 6, 47, 34

1, 5, 8, 23, 6, 65, 47, 34

1, 5, 8, 6, 23, 65, 47, 34

1, 5, 6, 8, 23, 65, 47, 34

Шаг 4: i4= 1, 5, 6, 8, 23, 65, 47, 34

1, 5, 6, 8, 23, 65, 34, 47

1, 5, 6, 8, 23, 34, 65, 47

Шаг 5: i5= 1, 5, 6, 8, 23, 34, 65, 47

1, 5, 6, 8, 23, 34, 47, 65

6.5.5 Шейкерная сортировка.

Массив: 23, 8, 5, 65, 47, 34, 1, 6

Шаг 1: 23, 8, 5, 65, 47, 34, 1, 6

23, 8, 5, 65, 47, 1, 34, 6

23, 8, 5, 65, 1, 47, 34, 6

23, 8, 5, 1, 65, 47, 34, 6

23, 8, 1, 5, 65, 47, 34, 6

23, 1, 8, 5, 65, 47, 34, 6

1, 23, 8, 5, 65, 47, 34, 6

Шаг 2: 1, 23, 8, 5, 65, 47, 34, 6

1, 23, 5, 8, 65, 47, 34, 6

1, 5, 23, 8, 65, 47, 34, 6

Шаг 3: 1, 5, 23, 8, 65, 47, 34, 6

1, 5, 23, 8, 65, 47, 6, 34

1, 5, 23, 8, 65, 6, 47, 34

1, 5, 23, 8, 6, 65, 47, 34

1, 5, 23, 6, 8, 65, 47, 34

1, 5, 6, 23, 8, 65, 47, 34

Шаг 4: 1, 5, 6, 23, 8, 65, 47, 34

1, 5, 6, 8, 23, 65, 47, 34

Шаг 5: 1, 5, 6, 8, 23, 65, 47, 34

1, 5, 6, 8, 23, 65, 34, 47

1, 5, 6, 8, 23, 34, 65, 47

Шаг 6: 1, 5, 6, 8, 23, 34, 65, 47

1, 5, 6, 8, 23, 34, 47, 65

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

При сортировке массива a[1], a[2], ..., a[n] методом простого выбора среди всех элементов находится элемент с наименьшим значением a[i], и a[1] и a[i] обмениваются значениями. Затем этот процесс повторяется для получаемых подмассивов a[2], a[3], ..., a[n], ... a[j], a[j+1], ..., a[n] до тех пор, пока мы не дойдем до подмассива a[n], содержащего к этому моменту наибольшее значение.

Массив: 23, 8, 5, 65, 47, 34, 1, 6

Шаг 1: 23, 8, 5, 65, 47, 34,1, 6

1, 8, 5, 65, 47, 34,23, 6

Шаг 2: 1, 8,5, 65, 47, 34, 23, 6

1, 5,8, 65, 47, 34, 23, 6

Шаг 3: 1, 5, 8, 65, 47, 34, 23,6

1, 5, 6, 65, 47, 34, 23,8

Шаг 4: 1, 5, 6, 65, 47, 34, 23,8

1, 5, 6, 8, 47, 34, 23,65

Шаг 5: 1, 5, 6, 8, 47, 34,23, 65

1, 5, 6, 8, 23, 34,47, 65

6.5.7 Сортировка разделением.

1. В исходном неотсортированном массиве выбрать некоторый элемент x = a(k) (барьерный элемент).

2. Переставить элементы массива таким образом, чтобы слева от x оказались элементы массива, меньшие или равные x, а справа ­ элементы массива, большие чем х.

3. Для дальнейшей сортировки необходимо применить п. 1, 2 для каждой из этих частей. И так до тех пор. Пока не останутся подмассивы, состоящие из одного элемента, то есть пока не будет отсортирован весь массив.

Массив: 23, 8, 5, 65, 47, 34, 1, 6

1. Выбираем средний элемент: 23, 8, 5, 65, 47, 34, 1, 6

2. Сортируем вправо от среднего элемента числа больше выбранного, а влево меньше:

23, 8, 5, 65, 47,34, 1,6

23, 8, 5, 65, 47,34, 1,6 – массив без изменений

23, 8, 5, 65, 47,34, 1,6 – массив без изменений

23, 8, 5, 65, 47,34, 1,6 – массив без изменений

23, 8, 5, 65, 47,34, 1,6 – меняем местами 6 и 65, т.к. 6<34 и 65>34: 23, 8, 5,6, 47,34, 1,65

23, 8, 5, 6, 47,34,1, 65 – меняем местами 1 и 47, т.к. 1<34 и 47>34: 23, 8, 5, 6,1,34,47, 65

Правая часть упорядочена, теперь выбираем среднее значение для левой части исключая число 34:

23, 8, 5, 6, 1, 34, 47, 65

23, 8,5, 6,1, 34, 47, 65 – меняем местами 1 и 23, т.к. 1<5 и 23>5: 1, 8,5, 6,23, 34, 47, 65

1, 8,5, 6, 23, 34, 47, 65 – меняем местами 8 и 5, т.к. 8>5: 1,5,8, 6, 23, 34, 47, 65

1, 5, 8,6, 23, 34, 47, 65 – меняем местами 8 и 6, т.к. 8>6: 1, 5,6,8, 23, 34, 47, 65