AOP_Tom3 (1021738), страница 102

Файл №1021738 AOP_Tom3 (Полезная книжка в трёх томах) 102 страницаAOP_Tom3 (1021738) страница 1022017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 102)

Но, наверное, было бы куда спокойнее, если бы мы не знали столько различных подходов к решению данной задачи! Изучение всех этих методов было приятным времяпрепровождением. Но теперь перед нами безрадостная перспектива — предстоит на деле решить, какой метод следует использовать в той или иной конкретной ситуации. Было бы прекрасно, если бы один или два метода сортировки превосходили все остальные безотносительно к приложению или используемой машине. На самом же деле каждый метод имеет свои собственные, одному ему присущие достоинства.

Например, метод пузырька (алгоритм 5.2.2В) не имеет ярко выраженных преимуществ, так как всегда можно найти лучший способ сделать то, что он делает; но даже он после соответствующего обобщения оказывается полезным для сортировки с двумя лентами (см. раздел 5.4.3). Итак, приходим к заключению, что почти все алгоритмы заслуживают того, чтобы о них помнили, так как существуют приложения, в которых какой-либо из них оказывается самым подходящим. В следующем кратком обзоре освещаются основные аспекты наиболее важных алгоритмов внутренней сортировки, с которыми мы встречались. (Как обычно, Х означает число записей в файле.) 1.

Распределяющий подсчет. Если диапазон ключей невелик, очень полезен алгоритм 5.20. Метод устойчив (не изменяет порядок записей с равными клк)чами), но требуется память для счетчиков и 2А' записей. Одна из модификаций, позволяющая сэкономить Х из этих записей ценой усзюйчинсх:ти, встречается в упр. 5.2-.13. 2. Простая вставка. Алгоритм 5.2.15 наиболее прост для программной реализации, пе требует дополнительного объема памяти и довольно эффективен при малых У (скажем, при Х ( 25). Нри больших А' он становится невыносимо медленным, если только исходные данные не окажутся сразу почти упорядоченными. 3.

Сортировка с убывающим смещением. Алгоритм 5.2.1ГУ (метод ГВелла) также довольно просто программируется, использует минимальный обьем памяти и весьма эффективен при умеренно больших!У (скажем, при Х < 1000). 4. Вставка в список. Алгоритм 5.2.!Е основан на той же идее, что и алгоритм простой вставки, и поэтому годится только при небольших ГЕ. Как и в других методах сортировки списков, в нем благодаря операциям со ссылками экономятся затраты на пересылку длинных записей; это особенно удобно, когда записи имеют переменную длину или являются частью других структур данных. 5. Сортировка с вычислением адреса эффективна., если ключи подчиняются известному (обычно — равномерному) закону распределения: важнейшими вариантами этого подхода являются вставки а несколько снискав (программа 5.2.1М) и комбинированная поразрядная сортировка со вставками Мак-Ларена (рассмотренная в конце раздела 5.2.5).

Для погледнего метода достаточно иметь О(~/7х') дополнительных ячеек памяти. Двухпроходный метод, который позволяет иметь дело с неравномерным распределением, анализируется в теореме 5.2.5Т. б. Обменная сортировка са слиянием. Алгоритм 5.2.2М (метод Бэтчера) и родственный ему алгоритм битоннай соргпираеки (упр. 5.3.4-10) полезны, еглн можно одновременно выполнять большое число сравнений. 7.

Обменная сортировка с разделением (метод Хоара, широко известный как быстрая сортировка). Алгоритм 5.2.2Я, вероятно, — самый полезный универсальный алгоритм внутренней сортировки, поскольку ои требует' очень мало памяти и опережает своих конкурентов по среднему времени выполнения на болыпинстве компьютеров. Однако в наихудшем случае он может работать очень медленно.

Поэтому, если вероятность неслучайных данных достаточно велика, приходится тщательно выбирать разделяющие элементы. Если выбирается медиана из трех элементов (как предлагается в упр. 5.2.2-55), то такое поведение, как в наихудшем случае, становится крайне маловероятным и, кроме того, несколько уменьшается среднее время работы. В. Простой выбор. Алгоритм аг.2.35 довольно прост и особенно подходит в случае, когда имеется специальное оборудование для быстрого поиска наименьшего элемента в списке. 9.

Пирамидальная соргаироака. Алгоритм 5.2.3Н при минимальных требованиях к памяти обеспечивает достаточно высокую скорость сортировки; как среднее, так и максимальное время работы примерно вдвое больше среднего времени быстрой сортировки. 10. Слияние списков. Алгоритм 5.2.4В осуществляет сортировку списков, обеспечивая при этом, так же как и алгоритм пирамидальной сортировки, весьма высокую скорость даже в наихудшем случае.

Кроме того, данный метод устойчив по отношению к равным ключам. 11. Поразрядная сортировка с использованием алгоритма 5.2.5Н вЂ” это не что нное, как гортнровка списков, которая приемлема лля клкэчей либо очень коротких, либо имеющих необычный порядок лексикографического сравнения. Вместо ссылок можно применить распределяющий подсчет (п. 1 нашего обзора); такая процедура потребует пространства для 2А' записей и для таблицы счетчиков, но благодаря простоте внутреннего цикла она особенно хороша для сверхбыстрых компьютеров— "пожирателей чисел", имеющих опережающее управление.

(Предостережение. Поразрядную сортировку не следует использовать при малых Х1) 12. Сортировка методам агтаеак и слияния (см. раздел 5.3.1) наиболее приемлема при очень малых Х в "прямолинейных" программах. Например, этот метод оказался бы подходящим в тех приложениях, в которых требуется сортировать много групп из пяти или шести записей. 13. 51огут существовать и гибридные методы, объединяющие один или более из приведенных выше.

Например, короткие подфайлы, возникающие при быстрой сортировке, можно сортировать методом слияния и вставок. 14. И наконец, для реализации безымянного метода, встретившегося в ответе к упр. 5.2.1 — 3, требуется, по-видимому, кратчайшая нз возможных программ сортировки. Но среднее время работы такой программы пропорционально Юз, т. е. это самая медленная программа сортировки из упомянутых в данной книге! Пространственные и временные характеристики многих из этих методов, запрограммированных для компьютера И1Х, сведены в табл. 1.

Важно иметь в виду, что числа в данной таблице являются лишь грубыми оценками относительного времени сортировки. Они применимы только к одному компьютеру, и предположения, касающиеся исходных данных, далеко не для всех программ абсолютно правомерны. Сравнительные таблицы, подобные этой, приводились во многих работах, но не найдется таких двух авторов, которые пришли бы к одинаковым выводам! Тем не менее данные о времени работы позволяют оценить хотя бы порядок скорости, которую следует ожидать от каждого алгоритма при сортировке записей из одного слова, так как И1Х вЂ” довольно типичный компьютер. В столбце "Память" в табл. 1 содержится некоторая информация об обьеме вспомогательной памяти, используемой каждым алгоритмом, в единицах длины записи.

Здесь буквой с обозначена доля записи, необходимая для одного поля связи; так, например, К(1 + с) означает, что методу требуется пространство для Т записей и д' полей связи. В асимптотических оценках среднего и максимального времени, приведенных в табл. 1, учитываются только главные члены, доминирующие прн больших М в предположении случайных исходных данных; с обозначает произвольную константу. Эти формулы могут иногда ввести в заблуждение, поэтому указано также фактическое время выполнения программы для двух конкретных последовательностей исходных данных. Случай Х = 16 относится к шестнадцати ключам, так часто появлявшимся в примерах раздела 5,2, а случай Х = 1000 относится к последовательности Кы Кю ..

Крова, определенной формулами К~ее~ = 0; Кп-~ = (3141592621К„+ 2113148651) шоб 10'е. Для получения характеристик каждого алгоритма, представленного в таблице, использовалась достаточно совершенная программа для И1Х, как правило, учитывающая усовершенствования, которые описаны в упражнениях. Размер байта при выполнении этих программ принят равным 100. Для внетиией сортпировкп необходимы методы, отличающиеся от методов внутренней сортировки, потому что предполагается использование сравнительно простых структур данных и Гюльшое внимание уделяется уменьшению времени ввода- вывода. В разделе 5,4.6 рассматриваются интересные методы, разработанные для сортировки данных на магнитных лентах, а в разделе 5.4.9 обсуждается использование дисков и барабанов.

Конечно, сортировка — не единственная тема этой главы. Попутно мы много узнали о том, как работать со структурами данных, обращаться с внешней памятью, анализировать алгоритмы, и о том, как изобретать... новые алгоритмы. $ О о о .и .О" о о 4» СО СО )' со О съ ч' О сч О) с сч ОС о: И И )О С« с сч со Сс О СО О В| сч й + й. ~ О) ЬС + ~ ~:Я со ь О О + с« + 3В сч ~ 4 о со +" с О О + и В О О Я ~В с со О 4) +~ ~ + со + К+ О О О + + О + О С« сч С'4 О с« ХД 4 Ю мЪ С« Я С« ис ~;й со Д Сс а о а СО Ж сс сч сч ЧС О) ) С4 С'4 Ъ Ю а с. а о О » о о а а о ,ч и ч Я о хч о х )» О а 3 о и а ОО. Д~ О О о $ и О ю и 1 О О 3 Д а о о $ а Д о о "и к х о 'и о Оо о а и о ч о Ф "Д И а и а о а х й О" х е 5 Оо «о СО Е И о Х ( а й Я Ы М о 5 Е ч са Ос Б с а В 1- Х со о а й Д «ф СО Ф о о «О м «о ж ж «о Ж а Д ущ аоод анисг1« «аиьиосэ«.

5 й 6 Е О О Оо Е ч)» о ф я сс О Х ~ Ф„" д«оо Л ~О и, о й О и о о х о Х О И р ОО ~ Бх а о О О О ИС Примечания к табл. 1 а Ключи тачько из трех цифр Ь Ключи только из шести цифр (т. е. из трех байтов) с Вывод не перекомпонован; результирующая последовательность определяется неявно ссылками или счетчиками л) Смещение выбирается, как в 5.2.1-(11); несколько лучшая последовательность появляется в упр. 5.2.1 -29 е М = 9, если использовать Бйй; для варианта с 91Ч добавить к среднему времени выполнения 1.60% Е М = 100 (размер байта) я М = 34. так как 2зл > 10ле > 2зз Ь Поскольку теория ллеполная, данные о среднем времени получены эмпирически л Оценка среднего времени базируется на предположении о равномерном распределении ключей 1 Дальнейшее совершенствование программы, о котором упоминается в тексте раздела и упражнениях, относящихся к этой программе, могут уменыпить время выполнения Ранние разработки.

Поиск прототипов современных методов сортировки возвращает нас в 19 век, когда были изобретены первые машины для сортировки. В Соединенных Штатах Америки перепись всех граждан проводилась каждые 10 лет, н уже к 1660 году проблема, связанная с обработкой огромных по объему данных переписи стала очень острой. В самом деле, число одиноких (т. е. не состоящих в браке) граждан не подсчитыввлось ежегодно, хотя вся необходимая информация собиралась. Герман Холлерит (Неппэл НойеблЬ), двадцатилетний служащий Бюро переписи, изобрел остроумный электрический табулятор, отвечающий нуждам сбора статистики, и около ста его машин успешно использовались при обработке данных переписи 1890 года. На рис.

Характеристики

Тип файла
DJVU-файл
Размер
10,16 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6549
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее