- •35 Жегуло а.И. Компьютерные науки 2010-2011 гг. Компьютерные науки Лекции для студентов 1 курса, 2010-2011 уч. Г., семестр 1
- •1. Основные понятия 3
- •2. Введение в язык программирования Pascal 3
- •7. Массивы 16
- •8. Сортировки массивов 22
- •9. Рекурсия 25
- •1. Символьные и строковые типы данных 31
- •Основные понятия
- •Способы описания алгоритма:
- •Введение в язык программирования Pascal
- •Структура программы на языке Pascal
- •Правила записи программ
- •Стиль программирования
- •Переменные и константы. Понятие типа данных
- •Классификация типов данных
- •Стандартные простые типы данных
- •Целые типы
- •Вещественные типы
- •Логические (булевские) типы
- •Перечисляемые типы
- •Интервальные типы
- •Порядковые типы
- •Описание данных
- •Описание переменных
- •Описание констант
- •Описание типизированных констант
- •Выражения
- •Операции отношения
- •Приоритеты операций
- •Арифметические выражения
- •Логические выражения
- •Операторы
- •Оператор присваивания
- •Оператор ввода с клавиатуры
- •Оператор вывода на экран монитора
- •Форматный вывод
- •Условный оператор (оператор альтернативы)
- •Составной оператор
- •Оператор выбора
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Оператор цикла for с параметром
- •Вложенные циклы
- •Взаимозаменяемость циклов различных видов
- •Дополнительные конструкции переходов для циклов
- •«Вечные» циклы
- •Простейшие алгоритмы
- •Вычисление суммы и произведения
- •Организация счетчика
- •Нахождение наибольшего и наименьшего значений
- •Рекуррентные последовательности
- •Итерационные алгоритмы
- •Подпрограммы (процедуры и функции)
- •Понятие подпрограммы, ее описания и вызова
- •Цели введения подпрограмм
- •Способы передачи параметров. Виды параметров
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Корректность передачи параметров
- •Досрочное завершение работы программы и подпрограммы
- •Реализация вызова подпрограммы
- •Область действия и время жизни идентификаторов
- •Правила видимости
- •Время жизни идентификаторов
- •Побочный эффект функции
- •Массивы
- •Описание переменных-массивов
- •Обозначение элементов массива
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Типизированные константы-массивы
- •Операции над массивами
- •Именная эквивалентность типов
- •Передача массива в качестве параметра
- •Открытые массивы
- •Типичные задачи для одномерных массивов
- •Поиск заданного элемента в массиве
- •Анализ методов поиска по количеству операций сравнения
- •Двумерные массивы – матрицы
- •Трехмерные массивы
- •Сортировки массивов
- •Понятие сортировки
- •Параметры оценки алгоритмов
- •Сортировка простым включением (простыми вставками) Принцип сортировки включением
- •Сортировка простым выбором Принцип сортировки выбором
- •Сортировка простым обменом (метод пузырька) Принцип сортировки обменом
- •Сравнение эффективности базовых методов сортировки
- •Использование индексных массивов при сортировке
- •Рекурсия
- •Что такое рекурсия
- •Рекурсивные подпрограммы
- •Прямая и косвенная рекурсия
- •Предварительное (опережающее) описание подпрограммы
- •Опасности рекурсии
- •Бесконечная рекурсия
- •Итерация и рекурсия. Необоснованное применение рекурсии
- •Глубокая рекурсия
- •Когда использовать рекурсию
- •Формы рекурсивных подпрограмм
- •Примеры рекурсивных программ
- •Ввод последовательности целых чисел, заканчивающейся нулем, вывод в обратном порядке
- •Поиск максимального элемента массива
- •Задача о Ханойских башнях
- •Символьные и строковые типы данных
- •Символьные типы данных
- •Представление символов в памяти компьютера
- •Символьные константы и переменные Неименованные символьные константы
- •Стандартные функции над символами
- •Строковые типы данных
- •Строковые типы. Представление строк в памяти компьютера
- •Стандартные функции и процедуры для строк
- •Выделение слов из строки
-
Параметры оценки алгоритмов
-
Время сортировки – основной параметр, характеризующий быстродействие алгоритма.
-
Память определенным алгоритмам требуется дополнительная память под временное хранение данных.
-
Естественность поведения – эффективность метода на отсортированных или частично отсортированных данных.
-
Устойчивость – устойчивая сортировка не меняет взаимного расположения равных элементов.
-
Сортировка простым включением (простыми вставками) Принцип сортировки включением
В начале работы отсортированная часть массива– это один первый элемент, неотсортированная часть – все остальные элементы.
Повторять шаги 1-4 до исчерпания неотсортированной части:
-
Взять первый элемент массива в неотсортированной части и сохранить его во вспомогательной переменной.
-
Найти место в отсортированной части, вставка в которое взятого элемента не нарушит упорядоченности. Освободить место вставки, сдвинув на одну позицию вправо элементы, оказавшиеся правее места вставки.
-
Вставить взятый элемент на освободившееся место.
-
Сдвинуть границу отсортированной части на 1 вправо.
На каждом шаге отсортированная часть увеличивается на один элемент, а неотсортированная часть уменьшается на этот элемент. По массиву из N элементов будет сделан (N-1) проход.
i=2 3 / 1 9 2 5 – исходный массив
i=3 1 3 / 9 2 5
i=4 1 3 9 / 2 5
i=5 1 2 3 9 / 5
1 2 3 5 9 – отсортированный массив
const n=100; type vector=array[1..n] of integer;
procedure InsertSort(var A: vector); //Сортировка простым включением
//Линейный поиск места вставки с одновременным сдвигом элементов вправо
Var i,j,x : integer;
begin
for i:=2 to n do
begin
x:=A[i]; //Взять i-ый элемент массива
j:=i-1; //Поиск места вставки начинается с конца отсортированной части
while (j>=1) and (x<A[j]) do //Поиск элемента A[j], перед которым поставим x
begin
A[j+1] := A[j]; //Пересылка вправо очередного элемента
j:=j–1 //Переход к следующему элементу в отсортированной части
end;
A[j+1] := x //Вставка элемента x
end
end;
-
Сортировка простым выбором Принцип сортировки выбором
В самом начале отсортированная часть массива пустая, неотсортированная часть – все элементы массива.
В неотсортированной части выбирается минимальный элемент и меняется местами с первым элементом неотсортированной части. Тем самым отсортированная часть увеличивается на этот элемент, а неотсортированная часть – уменьшается. По массиву из N элементов будет сделан (N-1) проход.
i=1 / 5 11 3 7 1 – исходный массив
i=2 1 / 11 3 7 5
i=3 1 3 / 11 7 5
i=4 1 3 5 / 7 11
i=5 1 3 5 7 / 11 – отсортированный массив
procedure SelectionSort(var A: vector); //Сортировка простым выбором
var i,j,imin,x : integer;
begin
for i:=1 to n-1 do
begin
imin:=i; //Взять i-ый элемент в качестве начального значения минимального
for j:=i+1 to n do
if A[j] < A[imin] then imin:= i; //Поиск минимального элемента
x:=A[i];
A[i]:=A[imin]; //Вставка минимального элемента на место i
A[imin]:=x //Пересылка элемента с места i на место минимального элемента
end
end;