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

4 Сортировка перемешиванием

Перестановка элементов в сортировке перемешиванием (шейкерная сортировка) выполняется аналогично, как и в пузырьковой сортировке, т. е. два соседних элемента, при необходимости, меняются местами. Пусть массив требуется упорядочить по возрастанию. Обозначим каждый пройденный путь от начала до конца последовательности через Wi, где i – номер пути; а обратный путь (от конца к началу) через -Wj, где j – номер пути. Тогда после выполнения Wi, один из неустановленных элементов будет помещен в позицию справа, как наибольший из еще неотсортированных элементов, а после выполнения -Wj, наименьший из неотсортированных, переместиться в некоторую позицию слева. Так, например, после выполнения W1 в конце массива окажется элемент, имеющий наибольшее значение, а после -W1 в начало отправиться элемент с наименьшим значением [5].

Реализация алгоритма быстрой сортировки на языке С#:

class Sheik_sort

{

public void SheikSort(int[] mas)

{

int b = 0;

int left = 0;

int right = mas.Length - 1;

while (left < right)

{

for (int i = left; i < right; i++)

{

if (mas[i] > mas[i + 1])

{

b = mas[i];

mas[i] = mas[i + 1];

mas[i + 1] = b;

b = i;

}

}

right = b;

if (left >= right) break;

for (int i = right; i > left; i--)

{

if (mas[i - 1] > mas[i])

{

b = mas[i];

mas[i] = mas[i - 1];

mas[i - 1] = b;

b = i;

}

}

left = b;

}

}

}

Рисунок 7 – Реализация программы, которая сортирует по возрастанию массив из 3000 элементов методом сортировки перемешиванием за 38 миллисекунд.

Рисунок 8 – Реализация программы, которая сортирует по убыванию массив из 3000 элементов методом сортировки перемешиванием за 38 миллисекунд.

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

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

Идея алгоритма очень проста. Пусть имеется массив A размером N, тогда сортировка выбором сводится к следующему:

  1. берем первый элемент последовательности A[i], здесь i – номер элемента, для первого i равен 1;

  2. находим минимальный (максимальный) элемент последовательности и запоминаем его номер в переменную key;

  3. если номер первого элемента и номер найденного элемента не совпадают, т. е. если key≠1, тогда два этих элемента обмениваются значениями, иначе никаких манипуляций не происходит;

  4. увеличиваем i на 1 и продолжаем сортировку оставшейся части массива, а именно с элемента с номером 2 по N, так как элемент A[1] уже занимает свою позицию;

С каждым последующим шагом размер подмассива, с которым работает алгоритм, уменьшается на 1, но на способ сортировки это не влияет, он одинаков для каждого шага [5].

Реализация алгоритма сортировки выбором на языке С#:

class Selectsort

{

public void Selection(int[] mas)

{

for (int i = 0; i < mas.Length - 1; i++)

{

int min = i;

for (int j = i + 1; j < mas.Length; j++)

{

if (mas[j] < mas[min])

{

min = j;

}

}

int dummy = mas[i];

mas[i] = mas[min];

mas[min] = dummy;

}

return;

}

}

Рисунок 9 – Реализация программы, которая сортирует по возрастанию массив из 3000 элементов методом сортировки выбором за 26 миллисекунд.

Рисунок 10 – Реализация программы, которая сортирует по возрастанию массив из 3000 элементов методом сортировки выбором за 26 миллисекунд.