Главная » Просмотр файлов » Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s)

Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393), страница 21

Файл №522393 Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (Алгоритмы + структуры данных = программы) 21 страницаVirt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393) страница 212013-09-14СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

После этих модификаций мы можем попытаться описать весь алгоритм в виде законченной программы (см. программу 2.(3). Анализ сортировки елттлнттелт. Поскольку на каждом проходе р удваивается и сортировка заканчивается, как только р~н, оиа требует (!оатгт! проходов.

По определению при каждом проходе все множество из и элементов копируется ровно один раз. Следовательно, обшее число пересылок равно М = и ° ((одзл1 (2.24) Число С сравнений по ключу еше меньше, чем М, так как при копировании остатка последовательности сравнения ие производятся. Но, поскольку сортировка слиянием обычно применяется прп работе с внешними запоминающими устройствами, стоимость операций пересылки часто на несколько порядков превышает стоимость сравнений. Поэтому подроб.

ный анализ числа сравнений не представляет особого практического интереса. Ллгоритат сортировки слиянием выдерживает сравнение даже с усовершенствованными методами сортировки, которые обсуждались в предыдущем. разделе. Но затраты на управление индексами довольно высоки, кроме того, существенным недостатком является использование памяти размером 2н элементов "к Поэтому сортировка слиянием редко применяется при работе с массивамн, т.

е. даннымп, расположслными в оперативной памяти. Цифры, характеризующие быстродействие сортировки слиянием в режиме реального вр ° мени, содержатся в последних строках табл. 2.9 и 2.!О. Этя показатели лучше, чем у пирамидальной сортировки, но хуиш, чем у быстрой сортировки. Ч Маиоииии, ито в итеративном варианте алгоритма бысгроя сорти. ривка трсбуетеи стек размера и, и а рекурсивном варианте ззгрггы наиигн зианитгльио больше. — Гргьи. р.д. 2. Сортировке ргеееймте жегйезогг; таг 1ЛЬт!,1! 1нс[ех; Ь,т,рд,г: 1пгезег; ир.* Ьоо[еап; [а иМеет индексы 1... 2еп) Ъезй ир:= !гие; р:= '1; терев! Ь:= 1; тп:= н; !Е ир йеа Ъеа!а 1:= 1; 1, 'и; 1с: н+1; 1; 2еп евй е!ие ЪеПш Ь:= 1; 1: н; 1;= и+1; 1;= 2еп еа4; зерее! (слияние серий из т и1 в Ь[ .[а — длина серии из т, г — длина серии изД 3Т пс ) Р йеп 4; Р е!зе 4: тт т:= т — 4; Ъ[ т > р йев г:= р е1зе г:.

т; т:=- т — г; ттЬ1!е (д~0) Л («ФО) до Ъе41а [слияние[ И а[1[ .1сгу < аИ .1сеу ФЬеп Ъе41а аЩ; а[![; Ь:. Ь+Ь; т: 1+1; 4: 4 — 1 еай е1яе Ъе4!в аЯ;= а[А, "1с:= Ь+Ь; 1:=,1 — 1; г:= г — 1 еа4 ев4; [копирование осгпатка серии из 1[ зтЪПе г к~ О 4о ЪеПю а[4[;= а[Я; 1с:= 1с+Ь;,1:=,1-11 «: «-1 еа4 1 [ копирование остатка серии из 11 ттЬ(1е а ~ О 4о Ъеа(а а[Ь) ".= аИ; Ь: Ь+Ь;1с 1+1; а т . ! — 1~ ев4 ; Ь: -Ь; г:= Ь; 1с:= 1; 1. '1 авП!т =О; ир:= -тир; р:= 2*р пв41 р еЪ и; !1- ир йеп 1ог т': = 1 !о и 4о а[11: = а[1+т![ ев4 (те«4езогг) Прегреммме 2.!3. Сортиреяяа нростмм слиянием, З.й Сортировка аовлвдоватвлькмк файлов [1б 1.3.2.

Естественнее слияние В случае простого слияния мы ничего не выигрываем, если данные уже частично рассортированы. На й-м проходе длина всех сливаемых подпоследовательностей меньше или равна 2а без учета того, что более длинные подпоследовательности уже' могут быт» упорядочены и их можно было бы сливать. Фактически можно было бы сразуслнвать какие-либо упорядоченные подпоследовательности длиной гл и п в одну последовательность из т + п элементов. Метод сортировки, при котором каждын раз сливаются две самые длинные возможные подпоследовательностн, называется естественным слиянием. Упорядоченную подпоследовательность часто называют цепочкой.

Но, поскольку слово «цепочка» чаще используется для обозначения последовательности символов, мы будем использовать слово серия, когда речь идет об упорядоченной подпоследовательности, Мы называем подпоследовательность оь ..., аь такую, что ав~(па+~ для й=), ..., ) — 1, аг,>ао (2.25) ат > а~+~, лшксимальной серией или, короче, серией. Итак, сортировка естественным слиянием сливает не последовательности фиксированной, заранее заданной длины, а (макснмальные) серии.

Серии имеют то свойство, что при слиянии двух последовательностей, каждая из которых содержит п серий, возникает одна последовательность, содержащая ровно и серий. Таким образом, на каждом проходе общее число серий уменьшается вдвое, н число необходимых пересылок элементов в худшем случае равно и (!опал], а в обычном случае даже меньше.

Ожидаемое число сравнений, однако, намного больше, так как кроме сравнений, необходимых для упорядочения элементов, требуются еще сравнения соседних элементов каждого фаяла для определения концов серии. Следующим нашим упражнением будет разработка алгоритма естественного слияния тем же поэтапным методом, который использовался при объяснении алгоритма простого слияния. Вместо массива он обрабатывает последовательный файл и представляет собой несбалансировапну|о двухфазную трехлентечную сортировку слиянием. Пусть исходная последовательность элементов задана в виде файла с, который в конце работы должен содержать результат сортировки. (Разумеется, в реальных пооцессах обработки исходные данные для сохранности сначала переписываются с ленты а рабочий файл с.) Используются две вспомогательные ленты а и Ь, Каждый проход состоит из фазы распределения, которая распределяет серии поровну из с в а и Ь, и фазы слияния, 2.

Соргмроаяа 116 которая сливает серии из а и Ь в с. Этот процесс показан на рнс. 2.13. а а а с с Ь ь я~ в фаза слиямия ~ фаза распредепеиия 1-а проход 2-и проход и-я провод Рис. 2.)3 Фазы сортировки и проходы сортировки. 17 31' 5 59' 13 41 43 67' 11 23 29 47' Э 7 71' 2 19 57' 37 61 5 17 31 59' 11 !3 23 29 4! 43 47 67' 2 3 7 19 57 71' 37 61 5 11 !3 17 23 29 31 41 43 47 59 67' 2 3 7 19 37 57 61 71 2' Э 5 7 11 13 17 19 23 29 31 37 41 43 47 57 59 61 67 71 2 — 4).

В естественном слиянии участвуют 20 чисел. Заметим, что требуются только три прохода. Сортировка заканчивается, как только число серий в с будет равно 1. (Предполагается, что в ясходном файле имеется хотя бы одна непустая серия.) Итак, пусть переменная 1 используется для подсчета числа серий, слнваемых в с. Если мы опрелелим глобальные объекты (2.26) то программу можно написать следуюшим образом: ргоседнге матата!тетке; таг Г: т!ггег; а,Ь; !аре; Ъеймз гереаг гезргйе(а); гемтйе(Ь); таге!(с)1 Йз!г!Ьи!е; теде!(а)' гете!(Ь) генгйе(с); 1: = 0;.тетке вв!11 ! = ! евй (2.271 В качестве примера в табл. 2.11 показан файл с в исходном состоянии (строка 1) и после каждого прохода (строки Таблица 2.!!.

Пример сортировки естествеииым сзияиием 2,3. Сортировка ооследоеотельиит файлов 117 Ясно, что две фазы выражаются двумя отдельными операторами. Теперь пх надо уточнить, т. е. описать более подробно. Подробные описания можно либо непосредственно вставить в текст, либо представить в вкд* процедур, и тогд» сокращенно записанные операторы следует рассматривать как вызовы процедур. На этот раз мы изберем последний способ и определим рквсейпте йЫпЪи1с, '° (иэ с в а и Ь) Ьей(п тереа1 сорупрл(с,а); Ы вЂ” сог (с) 1йеп сорутир.:,Ъ1 ппИ сог"(с) епй (2.28) ртосейв е тисгее; Ьей(п ,'иэ а и Ь в с) тереа1шсгхпии; 1::=-: 1 "1 ив61 соДЬ); К вЂ” сот"(а) Фйеп Ьей1п соруптн(а,с); (: =--.

!+1 епв (2.29) епй ртвсевпте соругии(тат х,у: саре) ," Ьей1п (перепись одной серии иэ х ву) тереа1 сору(х,у) ппм1 еос епв (2.30) Предполагается, что прн таком способе распределения в файлах а и Ь оказывается либо равное число серий, либо файл а содержит на одну серию больше, чем Ь. Поскольку соответствующие пары серий сливаются, в файле а может оказаться лишняя серия, которую следует просто переписать. Процедуры тессе и йэЫЬи1о формулируются с помощью подчиненных процедур тегдегил и сорргин, задачи которых понятны. Теперь опишем этн процедуры более подробно; онн требуют введения глобальной булевской перемет1ной сот (епб о( (пе гпп), значение которой показывает, достигнут ли конец серии.

2. Сортировка !!а ргеседпге вегяегап; Ьея!в (слияние серий из а и Ь а с) терев! 1т а',.кеу < Ь !.)геу !Лев Лера сору(а,с); 11 еог !Леп соругнп(Ь,с) еай е!эе Ьей!п сору(Ь,с)! Ы еог !Леа соругин(а,с) еай пп!!! еог ! (2.3!) Процесс сравнения и выбора по ключу при слиянии серий завершается, как только будет исчерпана одна нз двух серий. После этого остаток другой серии, который еще не исчерпан, нужно переслать в выходную серию с помощью просто~о копирования. Зто осуществляется вызовом процедуры соругин. Обе эти процедуры определены с помощью подчиненной процедуры сору, которая пересылает элемент из файла в файл у н определяет, достигнут ли конец серии.

Ее легко написать, используя операторы гесс! н ыт!Ге. Для того чтобы найти конец серии, нужно сохранять ключ последнего прочитанного (переписанного) элемента для сравнения со следующим. Зто «заглядывание вперед» достигается использованием буферной переменной файла х7. ргеспЛие сору(тат х,у: таре); тат Ьау' Иет; Ъейш геак)(х, ЬаУ); игйе~у, ЬаД; (2.32) 12ео)'(х) йеп еог:=- ггае е!зе еог:= Ьиуусеу > х!.кег епй Зги последовательности легко сливаются в одну серию, после чего сортировка заканчивается. Хотя этот пример и не при- На этом построение процедуры сортировки естественным слиянием закончено.

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

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

Список файлов учебной работы

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