
- •1.Архитектура эвм - уровни абстракции представления, аппаратная и программная части, основные элементы, поколения эвм.
- •2. Арифметич. Основы эвм. Типы данных, представление, перевод чисел. Коды чисел – прямой обратный дополнит.
- •3. Виды памяти и внешние устройства – регистры, озу, пзу, страничная и виртуальн. Память.
- •4. Процессор – уу, счак, машинная логика, набор операций, адресность.
- •5.По особенности используемой системы машинных команд: risc и cisc процессоры
- •5. Методы адресации, выполнение команд, прерывания, переместимость.
- •7. Персональные эвм, обзор основных типов, аппаратные элементы.
- •9.Функции и состав типичной ос.
- •10. Основные команды операционной системы
- •11. Классификация структур данных, задачи обработки, массивы, списки
- •12. Древовидные и табличные структуры
- •13. Поиск в массиве.
- •14. Методы внутренней сортировки.
- •15. Внешняя сортировка наборов данных.
- •16. Жизненный цикл программы.
- •17. Методы проектирования программ
- •18. Методы тестирования и отладки программ.
- •19. Понятие о технологии про-раммирования. Качество по.
- •20. Классификация и основы построения по.
- •21. Банк данных, архитектура бд.
- •29. Локальные сети, протоколы.
- •24. Пакеты прикладных программ.
- •25.Информационно-поисковые системы
- •26. Системы искусственного интеллекта (ии).
- •28. Основные понятия сапр.
- •23.Реляционная алгебра и обработка данных.
- •22.Субд и их функции. 23.Реляционная алгебра и обработка данных
- •32. Структурное программиро-вание.
14. Методы внутренней сортировки.
При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.
Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя:
• количество присваиваний;
• количество сравнений.
Все методы сортировки можно разделить на две большие группы:
• прямые методы сортировки;
• улучшенные методы сортировки.
Прямые методы сортировки по принципу, лежащему в основе метода, в свою очередь разделяются на три подгруппы:
1) сортировка вставкой (включением);
2) сортировка выбором (выделением);
3) сортировка обменом ("пузырьковая" сортировка).
Улучшенные методы сортировки основываются на тех же принципах, что и прямые, но используют некоторые оригинальные идеи для ускорения процесса сортировки. Прямые методы на практике используются довольно редко, так как имеют относительно низкое быстродействие. Однако они хорошо показывают суть основанных на них улучшенных методов. Кроме того, в некоторых случаях (как правило, при небольшой длине массива и/или особом исходном расположении элементов массива) некоторые из прямых методов могут даже превзойти улучшенные методы.
Сортировка вставкой
Принцип метода:
Массив разделяется на две части: отсортированную и неотсортированную. Элементы из неотсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве неотсортированной части — все остальные элементы.
Таким образом, алгоритм будет состоять из п-1-го прохода ( n — размерность массива), каждый из которых будет включать четыре действия:
• взятие очередного i-го неотсортированного элемента и сохранение его в дополнительной переменной;
• поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов;
• сдвиг элементов массива от i-1-го до j-1-го вправо, чтобы освободить найденную позицию вставки;
• вставка взятого элемента в найденную j-ю позицию.
Для реализации данного метода можно предложить несколько алгоритмов, которые будут отличаться способом поиска позиции вставки. Рассмотрим схему реализации одного из возможных алгоритмов. Слева в кружке указан номер прохода.
Сортировка выбором
Принцип метода:
15. Внешняя сортировка наборов данных.
Внешняя сортировка в корне отличается от внутренней (хотя в обоих случаях необходимо расположить записи данного файла в неубывающем порядке), и объясняется это тем, что время доступа к файлам на внешних носителях нас жесточайшим образом лимитирует. Структура данных должна быть такой, чтобы сравнительно медленные периферийные устройства могли справиться с потребностями алгоритма сортировки. Поэтому большинство изученных до сих пор методов внутренней сортировки (вставка, обмен, выбор) фактически бесполезно для внешней сортировки. Пусть, например, файл состоит из 5000 записей R1…R5000 длиной по 20 слов. Как быть, если во внутр. Памяти данной машины помещается одновременно только 1000 из этих записей? Решение: начать с сортировки каждого из 5 подфайлов R1..R1000,..R4001..R5000 по отдельности и затем слить полученные подфайлы. Слияние оперирует только очень простыми структурами данных, именно линейными списками, пройти которые можно последовательным образом, как стеки или очереди. Поэтому для слияния годятся самые дешевые внешние запоминающие устройства.
Многоуровневое слияние и выбор с замещением. Пусть имеется Р отрезков возрастающих, т.е. последовательность записей, ключи которых расположены в неубывающем порядке. Очевидным способом их слияния будет следующий: посмотреть на первые записи любого отрезка и выбрать из них ту, которой соответствует минимальный ключ; эта запись передается на выход и исключается из исходных данных, затем процесс повторяется. Пока Р не слишком велико, этот выбор удобно осуществлять, просто выполняя (Р-1) сравнений для нахождения наименьшего из текущих ключей. Но если скажем, Р>=8, то можно сократить работу, используя дерево выбора; тогда каждый раз требуется только прибл. (LogPпо2) сравнений (после начального формирования дерева). В описанном процессе каждый шаг, кроме первого, состоит из замещения наименьшего элемента следующим элементом из этого же отрезка и изменения соответствующего пути в дереве выбора. Процесс замещения в дереве выбора одного ключа другим называется выбором с замещением. Техника выбора с замещением может использоваться также на первой фазе внешней сортировки, если фактически выполнить Р-путевое слияние входных данных с самими собою. В этом случае Р выбирается достаточно большим, чтобы заполнить, посуществу всю внутреннюю память. Каждая запись при выводе замещается очередной записью из исходных данных. Если из этой новой записи ключ меньше, чем у выведенной записи, то мы не включаем ее в текущий отрезок, в противном случае мы обычным образом включаем ее в дерево выбора, так что она образует часть отрезка, порождаемого в