КАТЕГОРИИ: Архитектура-(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) |
Сортировка с помощью дерева
Сортировка Сортировка Сортировка | 44 | 18 | 06 | 42 | 94 | 55 | 12 |~67"
| 06 | 18 | 12 | 42 | 44 | 55 || 94 |~б7 XXAKKKK7 | 06 | 12 I 18 | 42 | 44 | 55 | 67 | эЦ Рис. 3.5. Пример сортировки Шелла Приводимая программа не ориентирована на некую определенную последовательность расстояний. Все t расстояний обозначаются соответственно hi, hi,..., ht, для них выполняются условия: ht=\; hi+i < ht. Каждая /ьсортировка программируется как сортировка с помощью прямого включения. Анализ алгоритма. При анализе алгоритма возникают очень сложные математические задачи, многие из которых ещё не решены [3, 9]. В частности, не известно, какие расстояния дают наилучшие результаты. Однако выявлен удивительный факт, что они не должны быть множителями друг другу. Дональд Кнут рекомендует такую последовательность [9]: 1 3 7 15 31 где hk_x=2hk+ l; ht= 1 и r=[log2«]-l. В этом случае затраты на сортировку п элементов пропорциональны п '. Метод сортировки с помощью прямого выбора основан на повторяющихся поисках наименьшего ключа среди п элементов, затем среди п-\ элементов и так далее. Улучшить сортировку можно в том случае, если получать от каждого прохода больше информации, чем просто идентификация единственного элемента [1,3,9,10,13]. Например, с помощью п/2 сравнений можно определить наименьший ключ из каждой пары элементов; при помощи следующих п1А сравнений можно выбрать наименьший из каждой пары уже выбранных наименьших ключей; наконец, при помощи п-\ сравнения можно построить дерево выбора и определить корень как наименьший ключ (рис. 3.6). Рис. 3.6. Повторяющиеся наборы среди двух ключей На втором шаге спускаемся по пути, указанному наименьшим ключом и исключаем его, последовательно заменяя на «дыру», либо на элемент, находящийся на противоположной ветви промежуточного узла (рис. 3.7). Элемент, оказавшийся в корне дерева, вновь имеет наименьший ключ и может быть исключен. После п шагов дерево становится пустым, и процесс сортировки заканчивается. Каждый из п шагов требует logw сравнений. Поэтому вся сортировка требует n-\og2n операций, не считая п шагов на построение дерева. Это значительное улучшение по сравнению с прямым методом выбора, который требует п шагов, но и даже по сравнению с сортировкой Шелла, которая требует п ' шага.
Дата добавления: 2014-11-29; Просмотров: 476; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |