Главная » Просмотр файлов » Задания практикума на ЭВМ

Задания практикума на ЭВМ (1110686), страница 3

Файл №1110686 Задания практикума на ЭВМ (Задания практикума на ЭВМ) 3 страницаЗадания практикума на ЭВМ (1110686) страница 32019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

4. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988.

5. Епанешников А.М., Епанешников В.А. Программирование в среде Turbo Pascal 7.0 - М.: "ДИАЛОГ-МИФИ", 2000.

КРАТКОЕ ОПИСАНИЕ МЕТОДОВ СОРТИРОВКИ

СОРТИРОВКА ВСТАВКАМИ

Идея методов сортировки вставками состоит в том, что в ранее упорядоченную подпоследовательность X1, X2, ..., Xk-1 вставляется Xk так, чтобы упорядоченными оказались уже k первых элементов исходной последовательности. В зависимости от способа поиска места для элемента q=Xk различаются следующие методы.

а) ПРОСТЫЕ ВСТАВКИ. Если q<Xk-1, то величина q по очереди сравнивается с Xk-1, Xk-2, ..., пока не будет найдена такая пара элементов Xi-1 и Xi, что Xi-1q<Xi. Это означает, что местом для q является i-я позиция. Поэтому элементы Xi, …, Xk-1 сдвигаются на одну позицию вправо и в освободившуюся i-ю позицию вставляется q.

б) БИНАРНЫЕ ВСТАВКИ. Величина q сравнивается со средним элементом подпоследовательности X1, X2, ..., Xk-1. Если q меньше этого элемента, то место для q ищется тем же способом в левой половине подпоследовательности, иначе - в правой половине. Когда место для q будет найдено, правые (от этого места) элементы сдвигаются на одну позицию вправо, а в освободившуюся позицию вставляется q.

СОРТИРОВКА ОБМЕНАМИ

В методах сортировки обменами переставляются элементы неупорядоченных пар, т.е. таких пар, в которых левый элемент больше правого. В зависимости от порядка перебора пар различаются следующие методы.

а) МЕТОД ПУЗЫРЬКА. По очереди просматриваются пары соседних элементов (X1 и X2, X2 и X3, X3 и X4 и т.д.) и в неупорядоченных парах (Xi>Xi+1) переставляются элементы; в результате просмотра всей последовательности ее максимальный элемент окажется на своем окончательном месте - в конце. Далее аналогичная процедура применяется ко всем элементам последовательности, кроме последнего. (Замечание: если при очередном просмотре последовательности не было ни одной перестановки, то последовательность уже упорядочена и потому следует прекратить сортировку.)

б) ЧЕЛНОЧНАЯ СОРТИРОВКА (метод просеивания). Здесь также сравниваются пары X1 и X2, X2 и X3 и т.д., но только до обнаружения неупорядоченной пары Xk>Xk+1. В этом случае осуществляется "движение назад": сравниваются и переставляются пары Xk+1 и Xk, Xk и Xk-1 и т.д. до тех пор, пока Xk+1 не попадет на свое место, т.е. пока не окажется упорядоченной подпоследовательность из k+1 первых элементов. Далее возобновляется "движение вперед": сравниваются пары Xk+1 и Xk+2, Xk+2 и Xk+3 и т.д.

СОРТИРОВКА ПРОСТЫМ ВЫБОРОМ

В сортировке простым выбором находится минимальный (максимальный) элемент последовательности и он переставляется с первым (последним) элементом. Далее аналогичная процедура применяется ко всем элементам, кроме первого (последнего). И так далее.

МЕТОД ШЕЛЛА

Пусть k - целое от 1 до n/2. Независимо друг от друга упорядочиваются (одним из описанных выше методов, например, простых вставок) подпоследовательности из элементов, отстоящих друг от друга на k позиций:

Xi, Xi+k, Xi+2k, Xi+3k, ... (i=1, 2, ..., k)

Затем k уменьшается и процесс повторяется заново. Последний шаг обязательно должен быть выполнен при k=1.

Значение k можно менять разными способами, один из них таков: вначале k равно (целой части от) n/2, а затем k каждый раз уменьшается вдвое.

БЫСТРАЯ СОРТИРОВКА

Выбирается некоторый элемент (например, средний) и все элементы последо-вательности переставляются так, чтобы выбранный элемент оказался на своем окончательном месте, т.е. чтобы слева от него были только меньшие или равные ему элементы, а справа - только большие или равные. Затем этот же метод применяется к левой и правой частям последовательности, на которые ее разделил выбранный элемент. (Замечание: если в части оказалось два-три элемента, то упорядочивать ее следует более простым способом.)

Требуемая перестановка элементов выполняется так. Выбранный элемент копируется в некоторую переменную q. Последовательность просматривается слева направо, пока не встретится элемент, больший или равный q, а затем просматривается справа налево до элемента, меньшего или равного q. Оба этих элемента меняются местами, после чего просмотры с обоих концов последовательности продолжаются со следующих элементов, и т.д. В итоге выбранный элемент окажется в той позиции, где просмотры сошлись, это и есть его окончательное место.

Быструю сортировку можно реализовать рекурсивно и нерекурсивно. Во втором случае границы одной из двух частей (лучше - более длинной), на которые выбранный элемент разделил последовательность, запоминаются в стеке, а другая часть упо-рядочивается описанным способом. После ее упорядочения из стека извлекаются границы первой части, и теперь уже она упорядочивается.

СОРТИРОВКА СЛИЯНИЕМ

Основная идея такой сортировки - разделить последовательность на уже упорядоченные подпоследовательности (назовем их "отрезками") и затем объединять эти отрезки во все более длинные упорядоченные отрезки, пока не получится единая упорядоченная последовательность. Отметим, что при этом необходима дополнительная память (массив Y[1..n]).

Различаются следующие варианты сортировки слиянием.

а) ПРОСТОЕ СЛИЯНИЕ. Считается, что вначале отрезки состоят только из одного элемента, и они сливаются в отрезки из двух элементов (из X1 и X2, из X3 и X4, ...), которые переносятся в массив Y. На втором этапе соседние двухэлементные отрезки (Y1, Y2 и Y3, Y4; Y5, Y6 и Y7, Y8; ...) объединяются в отрезки из 4 элементов, которые записываются в массив X. На третьем этапе строятся отрезки из 8 элементов, и они заносятся в массив Y, и т.д.

б) ЕСТЕСТВЕННОЕ СЛИЯНИЕ. Берутся наиболее длинный (по неубыванию) отрезок в начале массива X и наиболее длинный (также по неубыванию, но при просмотре справа налево) отрезок в конце массива, и они сливаются в один отрезок, который записывается в начало массива Y. Затем сливаются следующие максимально длинные отрезки с обоих концов, и полученный отрезок записывается (справа налево) в конец массива Y. Третьи по порядку отрезки после слияния записываются снова в начало Y (вслед за первым объединенным отрезком), четвертые - в конец Y (перед вторым объединенным отрезком) и т.д. Первый этап сортировки оканчивается, когда все элементы из X будут перенесены в массив Y. На втором этапе применяется та же процедура, только массивы X и Y меняются ролями. И так далее.

Замечание: в обоих вариантах следует учитывать, что в конце концов упорядо-ченные элементы должны оказаться в массиве X.

ЗАДАНИЕ 4. ЯЗЫК ПАСКАЛЬ.

ИНТЕРФЕЙС ПРОГРАММЫ СОРТИРОВКИ.

ПОСТАНОВКА ЗАДАЧИ

Требуется дополнить программу сортировки, реализованную в задании 3, подсистемой диалогового взаимодействия с пользователем (интерфейсом), которая с помощью экранных окон, меню и других средств упрощает общение пользователя с этой программой. Работу с экраном подсистема должна осуществлять в текстовом режиме.

Объединенная система должна предусматривать следующие возможности.

- Пользователь должен иметь возможность выбрать из нескольких предъявленных ему методов сортировки тот метод, которым затем будут упорядочиваться последовательности.

- Пользователь должен иметь возможность задавать свою длину последователь-ностей, которые будут упорядочиваться выбранным методом.

- В системе должна быть предусмотрена возможность работы в двух режимах - отладки и счета. В режиме отладки пользователь сам вводит элементы (даты) последо-вательности, которая должна быть упорядочена, а в ответ система демонстрирует пошаговую работу процедуры сортировки для этой последовательности (это нужно для показа правильности работы процедуры). В режиме счета система должна работать так же, как и в задании 3: должна сформировать несколько последовательностей заданной длины, отсортировать их и вывести на экран таблицу результатов.

- Система должна позволять пользователю менять сделанный им ранее выбор (метода, длины или режима) и должна повторять свою работу при новом выборе.

- При вводе длины и элементов последовательности пользователь должен иметь возможность редактировать вводимую информацию.

ВОЗМОЖНЫЕ СЦЕНАРИИ РАБОТЫ С СИСТЕМОЙ

Ниже описаны два возможных сценария работы пользователя с системой. Любой из них можно взять за основу и со своими изменениями реализовать в задании.

Сценарий 1.

Этап 1. Выбор метода.

Работа системы начинается с очистки экрана и показа на нем списка названий различных (не менее 4-5) методов сортировки. Пользователь выбирает один из них либо прекращает работу с системой.

Этот список должен быть реализован в виде вертикального меню - в виде окна (закрашенного своим цветом прямоугольника), в котором друг под другом выписаны названия методов (см. рис. 1). Вначале должно быть выделено (высвечено особым цветом) первое из этих названий, а затем при нажатии пользователем клавиши со стрелкой вниз или вверх система должна выделить следующее или предыдущее (по кругу) название, сняв выделение текущего названия.

Одновременно с меню методов на экране (в его нижней строке) должен высвечиваться текст, подсказывающий пользователю, что он должен сейчас делать, какие клавиши может нажимать и что они означают. Подсказка может быть, например, такой:

ВЫБЕРИТЕ МЕТОД: ↓,↑–сдвиг Enter-выбор Esc-выход

Нажатие пользователем клавиши Enter означает, что он выбрал тот метод, название которого сейчас выделено. (Замечание: поскольку в системе реализовано лишь два метода сортировки, то при выборе нереализованного метода система должна как-то сообщить об этом, например звуковым сигналом или выдачей сообщения "Метод не реализован", и позволить пользователю выбрать иной метод. Желательно реализованные методы как-то пометить, например звездочкой.)

Нажатие клавиши Esc означает конец работы с системой.

На этом этапе система не должна реагировать на другие клавиши, а курсор должен быть невидимым.

Этап 2. Выбор режима.

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

Запрос режима может быть реализован следующим образом. В свободной части экрана появляется окно с текстом "РЕЖИМ: ОТЛАДКА" (см. рис. 1). Если пользователь нажимает клавишу пробела, тогда слово "ОТЛАДКА" заменяется на слово "СЧЕТ"; при новом нажатии этой клавиши снова появляется слово "ОТЛАДКА" и т.д. Нажатие клавиши Enter означает выбор того режима, название которого указано сейчас в окне.

Допустимо также нажатие клавиши Esc, что означает отказ от выбора режима и возврат на предыдущий этап (с удалением окна режима и восстановлением подсказки, соответствующей предыдущему этапу). На иные клавиши система в это время не должна реагировать. Курсор должен быть невидимым.

Этап 3. Выбор длины.

При любом выбранном режиме система далее спрашивает у пользователя, последова-тельности какой длины он желает упорядочивать. В режиме счета длина может меняться от 1 до 100, а в режиме отладки - от 1 до 15.

Запрос длины можно реализовать так. На экране появляется окно с текстом "ДЛИНА (<=15): " (или "<=100" в режиме счета), за которым следует "поле ввода" - 3-4 позиции, в которые пользователь будет вводить длину (система не должна разрешать ему выходить за рамки этого поля). Курсор на этом этапе видим и показывает позицию, в которую пользователь вводит очередной символ (вначале это первая позиция поля ввода, а затем курсор сдвигается вправо по мере ввода числа). В нижней строке экрана должна высвечиваться соответствующая подсказка. Экран в этот момент может выглядеть так:

┌─────────────────────┐ ┌──────────────────┐

│ методы сортировки: │ │ режим: отладка │

│ Бинарные вставки │ └──────────────────┘

│ Метод пузырька (*)│

│ Простой выбор │ ┌──────────────────┐

│ МЕТОД ШЕЛЛА (*) │ │ длина (<=15): _ │

│ Естест.слияние │ └──────────────────┘

└─────────────────────┘

СТРОКА С ПОДСКАЗКОЙ

Рис. 1

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

Тип файла
Документ
Размер
241,5 Kb
Тип материала
Высшее учебное заведение

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

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