- •Функции ос, интерфейс пользователя.
- •Интерфейс пользователя
- •Интерфейс командной строки
- •Файловая структура. Диски, файлы, их имена.
- •Каталоги
- •Основные понятия
- •Работа с файлами
- •Работа с каталогами
- •Командная строка
- •Типы данных в Turbo Pascal. Порядковый, вещественный, структурированный. Совместимость и преобразование типов. Типы данных
- •Простые типы данных
- •Имена и доступ к файлам в Turbo Pascal.
- •Доступ к файлам.
- •Процедуры и функции для работы с файлами
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Операторы вводы/ вывода в Turbo Pascal.
- •Операции в Turbo Pascal. Математические операции
- •Логические операции
- •Операции отношения
- •Приоритет операций
- •Условный оператор. Оператор выбора в Turbo Pascal.
- •Метки и оператор перехода.
- •Операторы циклов с предусловием, постусловием и с параметром в Turbo Pascal.
- •Арифметические циклы (циклы с параметром)
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Процедуры и функции в Turbo Pascal. Локализация переменных. Формальные и фактические параметры в Turbo Pascal. Процедуры и функции
- •Описание и вызов процедур и функций
- •Локальные и глобальные переменные в Turbo Pascal.
- •Переход в графический режим в Turbo Pascal. Масштабирование экрана. Процедуры и функции для работы с экраном в графическом режиме.
- •Понятие алгоритма и его свойства. Линейные, разветвляющиеся, циклические алгоритмы.
- •Алгоритмы поиска элементов из массивов данных. Двоичный (бинарный) поиск элемента в массиве
- •Интерполяционный поиск элемента в массиве
- •Алгоритмы выборки элементов из массивов данных. Алгоритмы сортировки данных.
- •Критерии Эффективности
- •Сортировка выбором
- •Сортировка пузырьком
- •Сортировка простыми вставками
- •Сортировка Шелла.
- •Сортировка быстрая
- •Сортировка поразрядная
Алгоритмы выборки элементов из массивов данных. Алгоритмы сортировки данных.
Алгоритм сортировки— это алгоритм для упорядочения элементов в списке. В случае, когда элемент списка имеет несколько полей, поле, служащее критерием порядка, называется ключом сортировки. На практике, в качестве ключа часто выступает число, а в остальных полях хранятся какие-либо данные, никак не влияющие на работу алгоритма.
Критерии Эффективности
Единственного эффективнейшего алгоритма сортировки нет, ввиду множества параметров оценки эффективности:
Время — основной параметр, характеризующий быстродействие алгоритма. Называется также вычислительной сложностью. Для упорядочения важны худшее, среднее и лучшее поведение алгоритма в терминах размера списка (n). Для типичного алгоритма хорошее поведение — это O(n log n) и плохое поведение — это O(n²). Идеальное поведение для упорядочения — O(n). Алгоритмы сортировки, использующие только абстрактную операцию сравнения ключей всегда нуждаются по меньшей мере в O(n log n) сравнениях в среднем;
Память— ряд алгоритмов требует выделения дополнительной памяти под временное хранение данных. При оценке используемой памяти не будет учитываться место, которое занимает исходный массив и независящие от входной последовательности затраты, например, на хранение кода программы.
Устойчивость (stability)— устойчивая сортировка не меняет взаимного расположения равных элементов.
Естественность поведения— эффективность метода при обработке уже упорядоченных, или частично упорядоченных данных. Алгоритм ведёт себя естественно, если учитывает эту характеристику входной последовательности и работает лучше.
Необходимо подчеркнуть, что степень роста наихудшего времени выполнения — не единственный или самый важный критерий оценки алгоритмов и программ. Приведем несколько соображений, позволяющих посмотреть на критерий времени выполнения с других точек зрения:
Если создаваемая программа будет использована только несколько раз, тогда стоимость написания и отладки программы будет доминировать в общей стоимости программы, т.е. фактическое время выполнения не окажет существенного влияния на общую стоимость. В этом случае следует предпочесть алгоритм, наиболее простой для реализации.
Если программа будет работать только с «малыми» входными данными, то степень роста времени выполнения будет иметь меньшее значение, чем константа, присутствующая в формуле времени выполнения. Вместе с тем и понятие «малости» входных данных зависит от точного времени выполнения конкурирующих алгоритмов. Существуют алгоритмы, такие как алгоритм целочисленного умножения, асимптотически самые эффективные, но которые никогда не используют на практике даже для больших задач, так как их константы пропорциональности значительно превосходят подобные константы других, более простых и менее «эффективных» алгоритмов.
Эффективные, но сложные алгоритмы могут быть нежелательными, если готовые программы будут поддерживать лица, не участвующие в написании этих программ. Будем надеяться, что принципиальные моменты технологии создания эффективных алгоритмов широко известны, и достаточно сложные алгоритмы свободно применяются на практике. Однако необходимо предусмотреть возможность того, что эффективные, но «хитрые» алгоритмы не будут востребованы из-за их сложности и трудностей, возникающих при попытке в них разобраться.
Известно несколько примеров, когда эффективные алгоритмы требуют таких больших объемов машинной памяти (без возможности использования более медленных внешних средств хранения), что этот фактор сводит на нет преимущество «эффективности» алгоритма.
В численных алгоритмах точность и устойчивость алгоритмов не менее важны, чем их временная эффективность.
