- •Алгоритмы поиска
- •Последовательный поиск
- •Бинарный поиск
- •Инструкции
- •Предпроцессор. Заголовочные файлы. Директивы предпроцессора
- •Указатели
- •В иды указателей
- •Арифметика указателей
- •Указатель типа void*
- •Указатель на указатель
- •Указатель и ключевые слова const, volatile
- •Массивы
- •Примеры объявления массива
- •Инициализация массива
- •Неявная инициализация
- •Явная инициализация массива
- •Массивы и оператор sizeof
- •Трехмерные массивы
- •Связь массивов и указателей
- •Трехмерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Оператор new и массивы
- •Функции
- •Объявление (прототип) функции
- •Объявление inline-функции.
- •Определение
- •Вызов функции
- •Вызов inline – функции
- •2 Способ:
- •3 Пример:
- •Параметры значения
- •Параметры функции main
- •В озвращаемые значения
- •Ключевое слово const и функция
- •«Перегрузка» имен функции
- •Рекурсивные функции
- •Структуры c
Санкт-Петербургский государственный политехнический университет
Факультет технической кибернетики
Кафедра «Системный анализ и управление»
Конспект лекций
По предмету: Теория и Технология Программирования
(2 семестр)
выполнила: студентка группы 1082/3
Тамбаум Марина Андреевна
проверил: доцент кафедры САиУ
Хлопин Сергей Владимирович
Санкт-Петербург
2012
Алгоритмы сортировки
Сортировка пузырьком
2 7 3 9 4 8 6 5 1
При сортировке пузырьком сравниваются i-ый элемент с i+1; в случае невыполнения условия производится замена переменных, увеличение индекса i и действие продолжается. Сортировка производится до момента, когда при очередном проходе массива отсутствуют перестановки элементов.
2 7 3 9 4 8 6 5 1 (8 сравнений, 0 замен)
2 3 7 4 8 6 5 1 9 (6 замен)
2 3 4 7 6 5 1 8 9 (4 замены)
2 3 4 6 5 1 7 8 9 (3 замены)
2 3 4 5 1 6 7 8 9 (2 замены)
2 3 4 1 5 6 7 8 9 (1 замена)
2 3 1 4 5 6 7 8 9 (1 замена)
2 1 3 4 5 6 7 8 9 (1 замена)
1 2 3 4 5 6 7 8 9 (1 замена)
1 2 3 4 5 6 7 8 9 (0 замен)
Всего замен: 19
Всего сравнений (кол-во сравнений * кол-во проходов): 72 сравнений
Метод отбора
При сортировке методом отбора в новый массив, размером равным исходному, производится последовательный перенос минимального ( максимального) значения из исходного массива.
Исходный массив: 2 7 3 9 4 8 6 5 1
1 |
|
|
|
|
|
|
|
|
2 7 3 9 4 8 6 5
1 |
2 |
|
|
|
|
|
|
|
7 3 9 4 8 6 5
1 |
2 |
3 |
|
|
|
|
|
|
7 9 4 8 6 5
1 |
2 |
3 |
4 |
|
|
|
|
|
7 9 8 6 5
1 |
2 |
3 |
4 |
5 |
|
|
|
|
7 9 8 6
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
7 9 8
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
9 8
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Всего замен: 9
Всего сравнений: 36
Метод вставки
Производится поиск минимального (максимального) элемента массива и перестановка его на первое место.
А лгоритм повторятся, пока длина массива для поиска не будет равна 1.
2 7 3 9 4 8 6 5 1
1 2 7 3 9 4 8 6 5
1 2 3 7 9 4 8 6 5
1 2 3 4 7 9 8 6 5
1 2 3 4 5 7 9 8 6
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 8 9
Метод Шелла
При сортировке методом Шелла действие происходит в 3 этапа:
Сравниваются методом пузырьковой сортировки i-ый и i+3 элементы, и производится их сортировка
Метод пузырьковой сортировки для i и i+2 элементов.
Метод пузырьковой сортировки для i и i+1 элементов.
Массив считается отсортированным, когда на третьем этапе количество замен равно 0.
2 7 3 9 4 8 6 5 1
2 4 3 6 5 1 9 7 8
2 4 3 1 5 6 8 7 9
Быстрая сортировка
Исходный массив делится пополам, и средний элемент объявляется компарандом. В дальнейшем производится последовательное сравнение всех элементов массива с компарандом и перестановка слева или справа от компаранда в соответствии с результатом сравнения.
Полученные новые массивы значений также разбиваются пополам, выбирается компаранд и операция повторяется до того момента, пока размер массива не будет равен 1.
- компаранд
2 7 3 9 4 8 6 5 1
1 |
3 |
2 |
4 |
7 |
9 |
8 |
6 |
5 |
2 |
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Алгоритмы поиска
Последовательный поиск
В алгоритме последовательного поиска происходит последовательное сравнение искомого элемента с каждым элементом массива.
Бинарный поиск
В методе бинарного поиска в исходном массиве производят сортировку. В отсортированном массиве сравнивается средний элемент с искомым. В случае если средний элемент больше (меньше) искомого, продолжается поиск в левой (правой) половине.
В случае совпадения последовательно сравнивают соседний элемент с соседним слева или справа.
Хеширование – алгоритм одностороннего кодирования.
Инструкции
Инструкция - указание компилятору на выполнение каких-либо действий. Все инструкции следуют по порядку, содержат имена и разделители.
Инструкция
Имя |
Оператор |
Разделитель |
|
|
Табул |
Пробел |
Типы инструкций |
Назначения |
Примечания |
|
группа инструкций, заключенных в фигурные скобки {} |
{} могут не содержать ни одной инструкции |
|
Объявлять имя переменной |
Вводит новое имя в новой области видимости |
|
Последовательность операторов, операндов, действия над ними |
Может содержать арифметические, логические выражения, вызов функции |
|
; |
- |
|
if else switch |
- |
|
do while for |
- |
|
go to; continue; break; return; |
- |
Инструкция условия
if , if else
Назначение: проверка правильности условия.
If (условие) { true инструкция}
[ else { false инструкция} ]
Switch (переключатель)
Switch ( выражение )
{
case const_1:
. . . ;
break;
case const_2:
. . .;
break;
case const_3:
case const_4;
. . .;
break;
default;
. . .;
break;
}
Существенно:
В скобках switch находится выражение, которое в итог е сводится к целому типу.
Точки передачи управления программы помечены ключевым словом case.
Каждой такой метке сопоставляется константа типа int для сравнения со значением, вычисленным в скобках.
Обычно использование case предполагает, что будет выполняться следующая за операндом.
Для прекращения обработки case-выражений используется функция break, которое передаёт управление на закрывающую скобку.
Выражение default будет выполняться, если не совпало ни одного условия.
Switch (month)
{
case 1:
cout<< «январь\n»;
case 2:
cout<< «февраль\n»;
case 3:
cout<< «март\n»;
break;
default;
cout<< «нет месяца\n»; }
Инструкция цикла
1) while (условие продолжения цикла)
{операторы}
Обычно используется для нерегулярных циклов (когда количество повторений заранее неизвестно)
Пример:
While (i=1)
{
if (getch()=’A’)
break;
}
2) do { операторы } while ( условие );
3) for ([ инициализация…];[выражение 1, условие];[выражение 2])
{ тело цикла; }
Используется для организации регулярных циклов (когда известно число повторений).
Инструкции безусловного перехода
break;
Прерывает выполнение инструкции switch, while, for и передаёт управление на инструкцию, следующую за ними. Если имеет место вложенность, то прерывается самая внутренняя по отношению к break; инструкция.
continue;
Прерывает выполнение while и for и переходит к следующей итерации.
return;
Прерывает выполнение текущей функции и отдаёт управление вызывающей функции
goto ;
Осуществляют безусловный переход, но только в пределах одной функции.