
- •1.Основные понятия: программирование, данные, программа, процесс, оператор, алгоритм. Краткая характеристика развития программирования.
- •2.Основные этапы решения задач на эвм.???
- •3.Алгоритм, свойства алгоритма. Алгоритмический язык программирования. Способы записи алгоритма.
- •4. Синтаксис и семантика языка программирования??. Структура программы на языке Pascal.
- •5.Основные символы языка Pascal. Идентификаторы, константы, переменные.
- •6.Скалярные типы данных.? Вроде как тоже стандартные
- •7.Стандартные типы данных. Надо уточнить
- •8.Выражения. Операторы. Составной оператор.
- •9.Оператор условия if.
- •10.Оператор выбора case.
- •11.Оператор цикла For.
- •12.Оператор цикла Repeat.
- •13.Оператор цикла While.
- •14.Процедуры и функции. Основные понятия.
- •15.Подпрограммы в языке Pascal.
- •16.Параметры подпрограмм.
- •17.Принцип локализации. (поискать)
- •18.Массив как структура данных.
- •19.Строки.
- •1 . Операция сравнения (так как в строках определён порядок, то для их возможно сравнить).
- •2. Операция обращения к элементу строки
- •20.Записи.
- •Запись с вариантной частью
- •21.Множества.
- •22.Файлы. Типизированные файлы.
- •Описание типизированных файлов
- •23.Файлы. Текстовые файлы.
- •Текстовые файлы
- •Пробельные символы
- •24.Файлы. Нетипизированные файлы.
- •25.Рекурсии.
- •26. Программирование графики. Графика в Pascal
- •Действия с пером.
- •Действия с кистью.
- •Действия со шрифтом
- •Действия с рисунками.
- •Действия с графическим окном
- •Задание режимов вывода
- •27.Создание модулей.
- •28.Сортировки массивов. Пузырьковая сортировка.
- •29.Сортировки массивов. Шейкерная сортировка.
- •30.Сортировки массивов. Сортировка Шелла.
- •31.Сортировки массивов. Быстрая сортировка.
- •32.Сортировки массивов. Сортировка прямыми (простыми) вставками.
- •33.Сортировки массивов. Сортировка бинарными вставками.
- •34.Сортировки массивов. Сортировка прямыми (простыми) вставками с барьером.
- •35.Сортировка массивов. Пирамидальная сортировка.
- •36.Динамические структуры данных. Стек, его применение. Операции над элементами стека.
- •37.Динамические структуры данных. Очередь, ее применение. Операции над элементами очереди.
- •38.Динамические структуры данных. Списки, их применение. Операции над элементами списка, их реализация.
- •Формирование списка
- •Просмотр списка
- •Удаление элемента из списка
- •39.Динамические структуры данных. Деревья, их применение.
- •40.Тип данных указатель.
29.Сортировки массивов. Шейкерная сортировка.
Задача сортировки
Задача сорт заключаются в упорядочении элементов массива.
Шейкерная сортировка широко используется в тех случаях, когда известно, что элементы почти упорядочены
Шейкер сортировка принимает во внимания тот факт, что от последней перестановки до конца (начала) массива находятся отсортированные элементы. Учитывая данный факт, просмотр осуществляется не до конца (начала) массива, а до конкретной позиции. Поэтому при использовании Шейкер сортировки необходимо запоминать индекс последней перестановки. На следующем шаге цикла начнём просмотр с последней перестановки. Просмотр массива осуществляется слева направо (устанавливается правая граница). Затем справа налево (устанавливается левая граница). Просмотр массива осуществляется до тех пор, пока все элементы не встанут в порядке возрастания (убывания).
Предположим, мы упорядочиваем массив в порядке возрастания. После первого прохода "Пузырьком", самый большой элемент массива встанет на свое место. Выполним второй проход наоборот, от предпоследнего элемента до первого. После этого прохода встанет на свое место самый маленький элемент. Так и будем выполнять наши проходы массива: нечетные слева - направо и четные справа - налево. При этом на нечетных проходах будет занимать свое место самый большой элемент (из оставшихся), а при нечетных самый маленький (также из оставшихся).
Сравниваем 33 с 7. Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,33,15,11,0,4,25,-1. Сравниваем 33 с 15. Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,33,11,0,4,25,-1. Сравниваем 33 с 11. Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,11,33,0,4,25,-1. Сравниваем 33 с 0. Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,11,0,33,4,25,-1 и т.д. Сравниваем 33 с -1. Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,11,0,4,25,-1,33. Затем меняем направление просмотра и продолжаем процесс. Сравниваем 25 с -1. . Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,11,0,4,-1,25,33. Сравниваем 4 с -1. . Меняем местами элементы и сохраняем позицию перестановки. Массив равен 7,15,11,0,-1,4,25,33 и т.д. Сравниваем 7 с -1. . Меняем местами элементы и сохраняем позицию перестановки. Массив равен -1,7,15,11,0,4,25,33. В итоге получаем после первого шага Шейкер сортировки (рис. 1).
Запоминать, были или не были перестановки в процессе некоторого прохода.
Запоминать не только сам факт, что обмен имел место, но и положение (индекс) последнего обмена.
Чередовать направление последовательных просмотров.
Левая граница = Номер первого элемента
Правая граница = Номер последнего элемента
Пока Левая граница < Правой границы делать
Прямой проход "Пузырька" от Левой границы до Правой-1
Правая граница = Правая граница - 1
Обратный проход "Пузырька" от Правой границы до Левой+1
Левая граница = Левая граница + 1
k:= 25; {Индекс последнего изменения}
s:= 1; {Первый элемент массива}
e:= 25; {Последний элемент массива}
while e > s do
begin
for i:= e downto s+1do if A [i] < A[i-1] then
begin
tmp := A[i];
A[i] := A[i-1];
A[i-1] := tmp;
k := i; {запоминание индекса последней перестановки}
end;
s:=k;
for i:= s to e-1 do if A[i]>A[i+1] then
begin
tmp := A[i];
A[i] := A[i+1];
A[i+1] := tmp;
k := i;
end;
e:=k;
end;