Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по титп.doc
Скачиваний:
9
Добавлен:
24.09.2019
Размер:
249.86 Кб
Скачать

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Системный анализ и управление»

Конспект лекций

По предмету: Теория и Технология Программирования

(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 этапа:

  1. Сравниваются методом пузырьковой сортировки i-ый и i+3 элементы, и производится их сортировка

  2. Метод пузырьковой сортировки для i и i+2 элементов.

  3. Метод пузырьковой сортировки для 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

Алгоритмы поиска

  1. Последовательный поиск

В алгоритме последовательного поиска происходит последовательное сравнение искомого элемента с каждым элементом массива.

  1. Бинарный поиск

В методе бинарного поиска в исходном массиве производят сортировку. В отсортированном массиве сравнивается средний элемент с искомым. В случае если средний элемент больше (меньше) искомого, продолжается поиск в левой (правой) половине.

В случае совпадения последовательно сравнивают соседний элемент с соседним слева или справа.

  1. Хеширование – алгоритм одностороннего кодирования.

Инструкции

Инструкция - указание компилятору на выполнение каких-либо действий. Все инструкции следуют по порядку, содержат имена и разделители.

Инструкция

Имя

Оператор

Разделитель

Табул

Пробел

Типы инструкций

Назначения

Примечания

  1. Составная инструкция

группа инструкций, заключенных в фигурные скобки {}

{} могут не содержать ни одной инструкции

  1. Инструкция объявления

Объявлять имя переменной

Вводит новое имя в новой области видимости

  1. Инструкция выражения

Последовательность операторов, операндов, действия над ними

Может содержать арифметические, логические выражения, вызов функции

  1. Пустая инструкция

;

-

  1. Инструкция выбора

if else

switch

-

  1. Инструкция цикла

do

while

for

-

  1. Инструкция безусловного перехода

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;

}

Существенно:

  1. В скобках switch находится выражение, которое в итог е сводится к целому типу.

  2. Точки передачи управления программы помечены ключевым словом case.

Каждой такой метке сопоставляется константа типа int для сравнения со значением, вычисленным в скобках.

  1. Обычно использование case предполагает, что будет выполняться следующая за операндом.

Для прекращения обработки case-выражений используется функция break, которое передаёт управление на закрывающую скобку.

  1. Выражение 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])

{ тело цикла; }

Используется для организации регулярных циклов (когда известно число повторений).

Инструкции безусловного перехода

  1. break;

Прерывает выполнение инструкции switch, while, for и передаёт управление на инструкцию, следующую за ними. Если имеет место вложенность, то прерывается самая внутренняя по отношению к break; инструкция.

  1. continue;

Прерывает выполнение while и for и переходит к следующей итерации.

  1. return;

Прерывает выполнение текущей функции и отдаёт управление вызывающей функции

  1. goto ;

Осуществляют безусловный переход, но только в пределах одной функции.