Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по СиАОД.doc
Скачиваний:
32
Добавлен:
05.11.2018
Размер:
1.25 Mб
Скачать

Литература

  1. Альфред Ахо, Джон Э. Хопкрофт, Д. Ульман Структуры данных и алгоритмы. - М. - СПб – Киев: «Вильямс», 2000 г. – 384 с.

  2. Н. Вирт Алгоритмы + структуры данных = программы. - М.: «Мир», 1985 г. – 406 с.

  3. Фрэнк М. Каррано, Джанет Дж. Причард. Абстракция данных и решение задач на С++. Стены и зеркала. - М. - СПб – Киев: «Вильямс», 2003 г. – 848 с.

  4. Д. Кнут. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. – М: «Мир», 1976 г. (переиздание - М., Изд. "Вильямс", 2000 г.) – 735 с.

  5. Д. Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск. – М: «Мир», 1978 г. (переиздание - М., Изд. Изд. Вильямс", 2000 г.) – 844 с.

  6. Т. Кормен, Ч. Лейзерсон, Р. Ривест Алгоритмы. Анализ и построение. - М: «БИНОМ», 2000 г. – 960 с.

  7. Кубенский А.А. Структуры и алгоритмы обработки данных: объектно-ориентированный подход и реализация на С++. – СПб.: БХВ-Петербург, 2004 г. – 464 с.

  8. Дж. Макконелл. Анализ алгоритмов. Вводный курс. - М: «Техносфера», 2002 г. – 304 с.

  9. Роберт Сэджвик. Фундаментальные алгоритмы на С++. Части 1-4. - М: «DiaSoft», 2001 г. – 688 с.

  10. Уильям Топп, Уильям Форд. Структуры данных в С++. – М: «Бином», 2000 г. – 816 с.

  11. Хезфилд Р., Кирби Л. Искусство программирования на С. Фундаментальные алгоритмы, структуры данных и примеры приложений. – Киев: «ДиаСофт», 2001г. – 736 с.

  12. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си. – М.: «Финансы и статистика», 2004 г. – 464 с.

Приложение a: Псевдокод. Основные правила и соглашения псевдокода

Чтобы не отвлекаться при изучении алгоритмов на особенности кодирования на конкретном языке программирования, принято вести записи алгоритмов на псевдокоде. Действия алгоритма описываются полуформально. Можно пропустить технические подробности программирования, затеняющие суть алгоритма.

  1. Отступ от левого поля указывает на уровень вложенности. Это делает излишним использование блочных скобок ( {} – в С++, begin–end–в Паскале).

  2. Циклы while, for, repeat, until и условные операторы if–then–else имеют тот же смысл, что и в С++ и Паскале.

  3. Символ начинает комментарий, идущий до конца строки.

  4. i←e означает присваивание переменной i значения e,

  5. i←j←e означает одновременное присваивание значения e переменной i и j.

  6. Индекс массива указывается в квадратных скобках А[i]. Знак “ .. ” выделяет часть массива А[i..j] от i–го до j–го значения.

  7. Индекс начинается с 1.

  8. Переменные локальны внутри функции.

  9. Часто используются объекты, состоящие из нескольких полей, называемых атрибутами. Значение поля записывается как имя поля [имя объекта]. Например, поле left с указателем на левого сына узла дерева t обозначается, как left[t]

  10. Переменная, означающая массив или объект, считается указателем на его данные. После присваивания y←x для любого поля f выполняется f[y] = f[x]. Более того, если выполним f[x]←3, то будет и f[y]=3, поскольку после y←x переменные y и x указывают на один объект.

  11. Указатель может иметь специальное значение nil.

  12. Параметры передаются функциям по значению: вызванная функция получает собственную копию параметров. Изменение параметра внутри функции снаружи не видно.

  13. При передаче массивов или объектов функция получает указатель на данные.

Приложение Б:

Алгоритмы внутренней сортировки.

Алгоритм сортировки методом выбора

Selection_Sort (A, n)

  1. A - массив

  2. n - размерность массива

  3. for i1 to n-1

  4. do imini

  5. for ji+1 to n

  6. do if A[j]<A[imin]

  7. then iminj

  8. tempA[imin]

  9. A[imin] A[i]

  10. A[i] temp

Алгоритм сортировки методом вставок

Insertion_Sort(A, n)

  1. A - массив

  2. n - размерность массива

  3. for i2 to n

  4. do xA[j]

  5. ji-1

  6. while j>0 and A[j]> x

  7. do A[j+1] A[j]

  8. jj-1

  9. A[j+1] x

Алгоритм обменной сортировки

Bubble_Sort (A, n)

  1. A - массив

  2. n - размерность массива

  3. for i 1 to n-1

  4. do for jn down i-1

  5. do if A[j-1] < A[j]

  6. then temp A[j]

  7. A[j] A[j-1]

  8. A[j-1] temp

Алгоритм шейкер – сортировки

Sheker_Sort (A,n)

  1. Aмассив

  2. n – размерность массива

  3. l 1

  4. r n

  5. while l < r

  6. do for j r down l+1

  7. do if A[j-1]>A[j]

  8. then temp A[j-1]

  9. A[j-1] A[j]

  10. A[j] temp

  11. k j

  12. l k+1

  13. for j l to r

  14. do if A[j-1]> A[j]

  15. then temp A[j-1]

  16. A[j-1] A[j]

  17. A[j] temp

  18. k j

  19. r k-1