- •1.Структура эвм. Основные этапы решения задач на эвм.
- •2. Понятие алгоритма. Свойства алгоритмов. Схемы алгоритмов.
- •3. Блочная структура Паскаль – программ. Основные разделы.
- •4. Стандартные простые типы данных.
- •5. Перечислимый и ограниченный тип данных.
- •6.Процедура ввода данных.
- •8. Основные операторы языка Паскаль. Оператор присваивания, составной оператор.
- •9. Условный оператор.
- •10)Оператор вывода case.
- •16, 17. Структурный тип данных. Массивы и их описание. Одномерные и двумерные массивы.
- •18. Подпрограммы. Процедуры и функции. Сходство и отличия.
- •22.Локальные и глобальные переменные.
- •25. Способы передачи параметров. Правило согласования формальных и фактических параметров.
- •27,28,29.Сортировка в языке Паскаль.
- •27. Сортировка Обменом (пузырёк).
- •28. Сортировка методом вставок(включения).
- •29. Сортировка методом выбора.
- •30. Индексная сортировка
- •31. Символьные переменные и строки. Обработка строк. Операции со строками.
- •32. Специальные процедуры и функции для работы со строками.
- •33. Прокраммирование с использованием множеств. Тип данных – множества.
- •34.Программирование с использованием записей. Тип данных – запись.
- •35.Оператор присоединения with при работе с записями.
- •39.Файловый тип данных. Работа с текстовыми файлами в паскале.
27,28,29.Сортировка в языке Паскаль.
Под сортировкой понимают процесс перестановки объектов данного множества в определённом порядке. Цель: облегчить последовательный поиск элементов в сортированном множестве.
Сортировка массивов.
Сортировка файлов.
Эти две категории называют внутренней и внешней. Массивы располагаются во внутренней оперативной памяти ЭВМ, которые характеризуются быстродействием, но малым объёмом, а файлы хранятся в более медленных, но более вместительной памяти на дисках.
Пусть даны элементы А1,А2,Аn. Сортировка означает перестановку этих элемнетов в таком порядке Ак1, Ак2, .. , Акн, что при заданной функции упорядочивания Ф(Ак1),Ф(Ак2),..,Ф(Акн).
Обычно функция упорядочивания не вычисляется по какому то специальному файлу, а содержится в каждом элементе в виде явной компоненты поля. Ее значение называется ключом элемента, а само поле ключевым, следовательно для представления элемента А хорошо подходит структура данных типа Запись.
Type
Item=record
Key:integer;
Data:t_date;
Поле дата –все существенные данные об элементе, поле кей – ключ который служит для идентификации элементов.
Для алгоритмов сортировки есть единственная существующая компонента, и нет необходимости определять остальные данные. Кей может иметь любой тип, на котором задано отношение порядка чар, реал, интежер, стринг, байт, ворд.
Основное требование к методу сортировки – экономное использование памяти, это значит, что переупорядочивание элементов надо производить в исходном массиве. Метод сортировки можно разбить на 3 основных класса, в зависимости о лежащего в их основе приёма.
сортировка вставок
сортировка выбором
сортировка обменом (пузырёк)
27. Сортировка Обменом (пузырёк).
Основан на том, что более «лёгкие» элементы массива постепенно «всплывают» , то есть переносятся к началу массива. Происходит сравнение и обмен соседних элементов попарно, пока не будут отсортированы все элементы.
Алгоритм пузырьковой сортировки по возрастанию состоит из последовательных просмотров снизу вверх (от конца к началу) массива. Если нижний элемент из 2-х соседних меньше верхнего, то выполняется обмен значениями таких элементов.
Сначала сравниваются 2 последних элемента массива (последний и предпоследний). Если последний элемент меньше чем предпоследний, то происходит обмен значениями этих элементов.
Дальше сравнивается 2-й и 3-й с конца элементы массива и если элемент расположенный ниже меньше, то он меняется местами со своим верхним соседом.
И т.д. до начала массива. В результате чего на 1-м месте окажется элемент массива с наименьшим значением.
Далее процесс по парного сравнения продолжается от конца массива уже до 2-го элемнта массива, т.к. 1-й элемент уже упорядочен. В результате на 2-м месте окажется элемент, значение которого меньше значения 1-го элемента.
И т.д. пока все элементы не будут упорядочены.
Главное достоинство – простота.
Наиболее серьёзным недостатком является быстрое замедление, когда кол-во элементов становиться большим.
Во многих случаях показано, что последние несколько проходов не влияют на порядок, т.к. они уже отсортированы(цикл работает впустую.
Способ улучшения алгоритма, это выяснить производился ли на данном проходе обмен, если нет, то алгоритм может закончить свою работу.
Program bubble_sort;
Const n=10;
Type vector=array[1..10] of real;
Var
Vec:vector;
Temp:real;
I,j:integer;
Begin
{vvod vec}
For i:=2 to n do
Begin
For j:=n downto I do
Begin
If vec[j]<vec[i]
Then
Begin
Temp:=vec[j-1];
Vec[j-1]:=vec[j];
Vec[j]:=temp;
End;
End;
End;
{pechat}
End.
Асимметрия метода.
Один лёгкий пузырь в тяжёлом конце отсортированного массива выплывает на место за 1 проход, а тяжёлый элемент в лёгком конце будет опускать на правильное место только на 1 шаг на каждом проходе, потом первый массив будет упорядочен за 1 шаг , а второй потребует больше проходов.
Отсюда вывод: менять направление следующих на других проходах, т.е. двигаясь снизу вверх, поднимаем лёгкий элемент, а двигаясь сверху вниз, опускаем тяжёлый элемент, получаем шейкер сортировку.
Сортировка обменом и её небольшие улучшения хуже, чем сортировка выбором и вставок. Их выгодно использовать, когда известно, что элементы упорядочены (но это очень редко).