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

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

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

[Установка 1, К, Л.[ Присвоить 4 ь 7' — 1, К ь К;, Л +- Л,. (На последующих шагах будет предпринята попытка вставить запись Л в нужное место, сравнивая К с К, при убывающих значениях 1.) БЗ. [Сравнение К: К,.[ Если К > Ко то перейти к шагу Б5. (Мы нашли искомое место для записи Л.) Б4. [Перемещение Ло уменьшение А[ Присвоить Лг ы ь Л,, 1 ь 1 — 1. Если 1 > О, то вернуться к шагу БЗ. (Если 1 = О, то К вЂ” наименьший из рассмотренных до сих пор ключей, а значит, запись Л должна занять первую позицию.) Бб.

[Перенос Л на место Л;+м[ Присвоить Л;~~ ь Л. $ В табл. 1 показан процесс выполнения алгоритма Б на множестве из шестнадцати чисел, которые используются для примеров в етом разделе. Данный метод чрезвьгчайно просто реализуется программно. На самом деде следующая М1Х-программа самая короткая из всех "порядочных" программ сортировки в втой книге. Таблица 1 ПРИМЕР СОРТИРОВКИ МЕТОДОМ ПРОСТЫХ ВСТАВОК 503: 087 087 503„:512 „087 503 512: 061 061 087 503 512„:908 061 087 503 512 908:170 061 087 1?О 503 512 908: 897 061 087 154 170 275 426 503 509 512 612 653 677„ 765 897 908 -' 703 061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908 Программа Б [Сортировке методом простых вставок).

Адреса записей, которые надо рассортировать, — от 1МРОТ+1 до 1МРОТ+И; записи сортируются в той же области памяти по ключу, занимающему целиком одно слово. Здесь гП = 7' — Аг; г12 вт 1; гА = Л = К; предполагается, что Х > 2. 01 БТАНТ ЕИТ1 2-М 1 В.Л ко щ~.,б 2. ОВ 2Н 1ЗА 1ИРОТ+И, 1 Л вЂ” 1 $2. Установка 1 К 77. 03 ЕМТ2 И вЂ” 1,1 л' — 1 1ьУ вЂ” 1, а1 ВН СНЮ тМПД В+В-~-~ ~З. а „,К:К. 05 ЗОЕ БР В+ К вЂ” 1 — А Перейти к шагу Я5, если К > К,. Об 4Н 1РХ 1МРОТ,2 В Я4.

Пе вместить мвньшить А 07 БТХ 1МРОТ+1,2 В В+~ +- Ло 08 ВЕС2 1 В 1 ь 1 — 1. 00 32Р ЗВ В Перейти к шагу БЗ, если 1 > О. 10 ВН ЯТА 1МРВТ+1,2 Л вЂ” 1 Я5. Л поместить на место 17 1ИС1 1 К вЂ” 1 19 31МР 2В 19 — 1 2<У<АХ 1 Время выполнения этой программы равно 9В+ 10Х вЂ” ЗА — 9 машинных цикловв, где М вЂ”. число сортируемых записей, А — число случаев, когда на шаге 84 значение 1 убывает до О, а Н - — количество перемещений записей.

Ясно, что А равно числу случаев, когда К, < гпш(Км, К, 1) при 1 < 1 < Х, т. е. это число левосторонних минимумов . величина, которая была подробно проанализирована в разделе 1.2.10. Нетрудно прийти к выводу, что Н тоже известно: число перемещений записей при фиксированном 1 равно числу инверсий ключа К, так что В равно числу инверсий перестановки Кг Кт .. Кя. Следовательно, согласно формулам 1.2.10 — (16), 5.1.1 (12) н 5.1.1-(13) имеем А = (пнп О, аяе Ног — 1, шах Н вЂ” 1, бет Нл — Нег ), 00 в=~ ьо, -Су' — яп4, Гт' — вт/г ь.~втя-1кя~гьуб), а среднее время выполнения программы 8 в случае, если ключи различны н рас- положены в случайном порядке, равно (2.25№+ 7.75Н вЂ” ЗНм — 6)и.

В упр. 33 показано, как можно несколько повысить скорость. Приведенные в качестве примера в табл. 1 данные содержат 16 элементов; в наборе имеется два левосторонних минимума, 087 и 061, и, как было показано в предыдущем разделе, 41 инверсия. Следовательно, Х = 16, А = 2, В = 41, а общее время сортировки равно 514и. Бинарные и двухпутевые вставки. Когда при сортировке методом простых вставок обрабатывается 7'-я запись, ее ключ сравнивается в среднем примерно с 7/2 ранее рассортированных ключей; поэтому общее число сравнений равно приблизительно (1+ 2+.

+ Х)/2 — №/4, а зто очень много, даже если Н не так уж и велико. В разделе 6.2.1 будут проанализированы методы бинарного поиска, которые указывают, куда вставлять /-й элемент после приблизительно !6у операций сравнения с соответствующим образом выбранными элементами сортируемого набора. Например, если вставляется 64-я запись, можно сначала сравнить ключ Кое с Кзз, а затем, если он меньше, сравнить его с К!е, если больше — с Кея и т.

д., так что место для Нее будет найдено после всего лишь шести сравнений. Общее число сравнений для Х вставляемых элементов равно приблизительно Х 16 Х, что существенно лучше, чем -,'Жз: в разделе 6.2.1 показано, что соответствуюгцая программа не обязательно намного сложнее, чем программа для простых вставок. Этот метод называется методом бинарных вставок. Он упоминался Джоном Мочли (ЗоЬп МаисЫу) еще в 1946 году, в первой публикации по машинной сортировке.

Неприятность состоит в том, что метод бинарных вставок позволяет решить задачу только наполовину: после того как найдено место, куда вставлять запись й, все равно нужно подвинуть примерно -'у ранее рассортированных записей, чтобы освободить место для Но так что общее время выполнении остается, по существу, пропорциональным №. В некоторых компьютерах (например, в 1ВМ 705) используются процессоры, в наборе команд которых имеется и команда перемещения блока памяти, выполняемая аппаратно с большой скоростью. Но с ростом Х зависимость от Жт, в конце концов, начинает преобладать.

Например, анализ, проведенный в й орнгнначе автор нсповьеует термнн "ппп" — еднннцв, под которой подрвзумевеется среднее вречя выполнения одной мешнняой команды (см. том 1). Это н есть не что иное, кек длятедьность мяшннного цикЛа — Прим. нерее. Х. Нэглером (Н. Лай!ег, САСМ 3 (1960), 618-620], показывает, что метод бинарных вставок не рекомендуется использовать при сортировке более !У = 128 записей по 80 символов на компьютере 1ВМ 705. Методика анализа применима и к другим компьютерам.

Разумеется, изобретательный программист может придумать какие-нибудь способы, позволяющие сократить число необходимых переписей в памяти; первый такой прием, предложенный в начале 50-х годов, проиллюстрирован в табл. 2. Здесь первый элемент помещается в середину области вьввода и место для последующих элементов освобождается при помощи сдвигов влево или вправо, туда, куда удобнее. Таким образом удается сэкономить примерно половину времени работы по сравнению с использованием метода простых вставок за счет некоторого усложнения программы.

Можно применять этот метод, используя не больше памяти, чем требуется для Ж записей (см. упр, 6), ио мы не станем дольше задерживаться на таких "двухпутевых" вставках, так как разработаны и гораздо более интересные методы. Таблица 2 ПРОЦЕСС СОРТИРОВКИ МЕТОДОМ ДВУХПУТЕВЫХ ВСТАВОК „503 087 503 087 503 512 061 087 503 512 061 087 503 512 908 061 087 170 503 512 „908 061 087 170 503 512 897 908 061 087 170 275 503 512 897 908 Метод Шелла. Для алгоритма сортировки, который каждый раз перемещает запись толька на одну позицию, среднее время выполнения будет в лучшем случае пропорционально !Ув, потому что в процессе сортировки каждая запись должна пройти в среднем через -'!У позиций (см. упр. 7). Поэтому, если желательно получить метод, существенно превосходящий по скорости метод простых вставок, необходим механизм, с помощью которого записи могли бы перемещаться большими скачками, а не короткими шажками.

Такой метод предложен в 1959 году Дональдом Л. Шеллом [Вона!д В. Б!ве!1, САСМ 2, 7 (ди!у, 1959), 30 — 32] и известен во всем мире под именем своего автора. В табл. 3 проиллюстрирована обивая идея, которая лежит в его основе. Сначала делим 16 записей на 8 групп по две записи в каждой группе: (Лв, Лв), (Лв, Л~о), (Лв, Лвв). В результате сортировки каждой группы записей по отдельности приходим ко второй строке табл. 3. Этот процесс называется первым проходом. Обратите внимание на то, чта элементы 154 и 512 поменялись местами, а 908 и 897 переместились вправо. Разделим теперь записи на четыре группы по четыре в каждой: (Лы Лв, Лв, Лвв),, (Лв, Лв, Лвв, Лгв).

Затем опять рассортируем каждую группу в отдельности: результат этого второго прохода показан в третьей строке таблицы. На Таблица 3 СОРТИРОВКА ШЕЛЛА СО СМЕЩЕНИЯМИ 8, 4, 2, 1 503 087 512 061 908 170 897 275 653 426 154 509 612 677 765 703 Сортировка черю 8.' 503 087 154 061 612 170 765 275 653 426 512 509 908 677 897 703 Сортировка через 4. 503 087 154 061 612 170 512 275 653 426 765 509 908 677 897 703 Сортировка через 2: 154 061 503 087 512 170 612 275 653 426 765 509 897 677 908 703 Сортировка через 1. 061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908 третьем проходе сортируются две группы по восемь записей; процесс завершается четвертым проходом, во время которого сортируются все 16 записей.

В каждой нз промежуточных стадий сортировки участвуют либо сравнительно короткие массивы, либо уже сравнительно хорошо упорядоченные массивы, поэтому на каждом этапе можно пользоваться методом простых вставок и сортировка выполняется довольно быстро. Метод сортировки Шелла также известен под именем БЬеПэог1 н метода сортировки с "убывающим смещением", поскольку каждый проход характеризуется смещением 5, таким, что сортируются записи, каждая из которых отстоит от предыдущей на А позиций. Последовательность значений смещений 8, 4, 2, 1 не следует считать незыблемой; можно п»хчьзоваться любой последовательностью 5»»,1»» ю ..., йе, но последнее смещение 6е должно быть равно 1.

Например, в табл. 4 продемонстрирована сортировка тех же данных со смещениями 7, 5, 3, 1. Как будет показано ниже, выбор значений смещений на последовательных проходах имеет весьма существенное значение для скорости сортировки. Алгоритм В [Серп»ировка Шелла). Записи Л», ..., Л»» перекомпоноаыааются в том же адресном пространстве памяти, После завершения сортировки их ключи будут упорядочены: К» « .. Кн. Для управления процессом сортировки ис- ПОЛЬЗУЕТСЯ ВСПОМОГатЕЛЬНаЯ ПОСЛЕДОВатЕЛЬНОСтЬ СМЕЩЕНИЙ Й» О 7»» ю ..., Йе, ГДЕ 7»е —— 1; правильно выбрав эти значения в последовательности, можно значительно сократить время сортировки.

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

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

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

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