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

Код процедуры сортировки по методу Шелла

void ShellSort (int a[], int n)

// Усовершенствованный метод включения

{

int x, k;

for (int h = n>>1; h>=1; h = 3*h/5) {

k = h;

for (int i = k; i<n; i++) {

x = a[i];

int j = i-k;

while(j>=0 && a[j]>x) {

a[j+k] = a[j];

j-=k;

}

a[j+k] = x;

}

}

}

void InsertionSort (int a[], int n)

// Простой метод включения

{

int x;

for (int i = 1; i<n; i++) {

x = a[i];

int j = i-1;

while(j>=0 && a[j]>x) {

a[j+1]

= a[j];

j--;

}

a[j+1] = x;

}

}

11.Задача сортировки данных. Сортировка одномерных массивов методом Хоара.

Задача сортировки данных. Определения:

  • Сортировкой называется упорядочение множества однотипных объектов по тому или иному признаку

  • Признак, по которому осуществляется упорядочение объектов, называется ключом сортировки

Примеры:

  • При составлении списка студентов их фамилии располагаются в алфавитном порядке

  • Мастерская по ремонту бытовой техники выполняет заявки на обслуживание в порядке их поступления – заявки упорядочиваются по времени

  • Порядок доставки товара торговым предприятием может определяться объемом торговой сделки – заказы будут сортироваться по стоимости

Метод быстрой сортировки разработан в 1960 г. английским ученомым Чарльзом Хоаром (Charles Antony Richard Hoare).

Сортировка Хоара является усовершенствованием сортировки методом обменом.

Идея метода

Идея этого метода основана на том факте, что наибольшая эффективность достигается, если производить обмены элементов, отстоящих друг от друга на большом расстоянии.

Рекурсивный характер алгоритма

    • Алгоритм Хоара является рекурсивным и сводится к сортировке отдельных подмассивов исходного массива

    • По этой причине этот метод сортировки называют также сортировкой сегментацией

    • Границы сортируемого подмассива задаются значениями переменных L и R

Алгоритм:

    • Выберем некоторым образом элемент x (опорный элемент) и будем просматривать массив, двигаясь слева направо, пока не найдем элемент a[i]>x

    • Затем будем просматривать массив справа налево, пока не найдем элемент a[j]<x

    • Поменяем местами эти элементы и сместим индексы i и j на единицу вправо и влево, соответственно

    • Продолжим "просмотр с обменом", пока индексы i и j не встретятся где-то в середине массива

    • В результате массив оказался поделенным на две части: левую с a[i]<x и правую с a[j]>x

    • При этом выполнилось условие i>j

    • То же самое необходимо проделать с левой и правой частями массива

    • В левом подмассиве нужно установить правую границу R=j

    • В правом подмассиве нужно установить левую границу L=i

    • Процесс продолжается до тех пор, пока каждая часть не будет содержать только один элемент. Мы получили типичный рекурсивный алгоритм

Код процедуры быстрой сортировки

void QuickSort (int a[], int L, int R)

// Усовершенствованный метод обмена

{

int i =L; int j = R;

int x = a[(L + R)>>1];

do {

while (a[i]<x) i++;

while (a[j]>x) j--;

if(i<=j) {

x = a[i];

a[i] = a[j];

j

] = x;

i++; j--;

}

}

while (i<=j);

if (i<R) QuickSort(a,i,R);

if (j>L) QuickSort(a,L,j);

}

Способ выбора опорного элемента

    • В качестве опорного значения x можно выбирать значение любого элемента сортируемого подмассива

    • Оказывается однако, что в подавляющем большинстве случаев выбор в качестве x значения среднего элемента приводит к хорошим результатам

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

    • Алгоритм быстрой сортировки следует применять для больших (N > 15) массивов, так как для массивов размером меньше пороговой (N < 15) этот алгоритм становится неэффективным

    • Неэффективен этот алгоритм и на частично упорядоченных массивах

12.Задача сортировки данных. Сортировка одномерных массивов. Пирамидальная сортировка.

Задача сортировки данных.

Определения:

  • Сортировкой называется упорядочение множества однотипных объектов по тому или иному признаку

  • Признак, по которому осуществляется упорядочение объектов, называется ключом сортировки

Примеры:

  • При составлении списка студентов их фамилии располагаются в алфавитном порядке

  • Мастерская по ремонту бытовой техники выполняет заявки на обслуживание в порядке их поступления – заявки упорядочиваются по времени

  • Порядок доставки товара торговым предприятием может определяться объемом торговой сделки – заказы будут сортироваться по стоимости

Сортировкой одномерного массива называется упорядочение значений его элементов по возрастанию или убыванию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]