Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сортировка методом Шелла




Сортировка Шелла была названа в честь ее изобретателя – Дональда Шелла, который опубликовал этот алгоритм в 1959 году. Общая идея сортировки Шелла состоит в сравнении на начальных стадиях сортировки пар значений, расположенных достаточно далеко друг от друга в упорядочиваемом наборе данных. Такая модификация метода сортировки позволяет быстро переставлять далекие неупорядоченные пары значений (сортировка таких пар обычно требует большого количества перестановок, если используется сравнение только соседних элементов).

Общая схема метода состоит в следующем.

Шаг 1. Происходит упорядочивание элементов пар для .

Шаг 2. Упорядочиваются элементы в группах из четырех элементов для .

Шаг 3. Упорядочиваются элементы уже в группах из восьми элементов и т.д.

На последнем шаге упорядочиваются элементы сразу во всем массиве . На каждом шаге для упорядочивания элементов в группах используется метод сортировки вставками (рис. 2).

В настоящее время неизвестна последовательность , оптимальность которой доказана. Для достаточно больших массивов рекомендуемой считается такая последовательность, что , а . Начинается процесс с , что . Иногда значение h вычисляют проще: . Это упрощенное вычисление h и будем использовать далее.

 
 

 


Рис.2. Демонстрация сортировки по неубыванию методом Шелла

 

//Описание функции сортировки Шелла

void Shell_Sort (int n, int *x){

int h, i, j;

for (h = n/2; h > 0; h = h/2)

for (i = 0; i < n-h; i++)

for (j = i; j >= 0; j = j - h)

if (x[j] > x[j+h])

Exchange (j, j+h, x);

else j = 0;

}

//процедура обмена двух элементов

void Exchange (int i, int j, int *x){

int tmp;

tmp = x[i];

x[i] = x[j];

x[j] = tmp;

}

Метод, предложенный Дональдом Л. Шеллом, является неустойчивой сортировкой по месту.

Эффективность метода Шелла объясняется тем, что сдвигаемые элементы быстро попадают на нужные места. Среднее время для сортировки Шелла равняется , для худшего случая оценкой является .

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 630; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.