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

Экзаменационные вопросы по курсу «Информатика и программирование»

  1. Алгоритмы сортировки (не менее трех)

  2. Методы оптимизации структуры и выполнения программного кода

  3. Методы форматирования кода

  4. Механизмы доступа к базам данных

  5. Объектная модель VBA и Microsoft Excel

  6. Объектная модель Visual C#

  7. Основные понятия объектно-ориентированного программирования: объект, класс, метод

  8. Принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм

  9. Принципы экстремального программирования

Ответы на вопросы можно найти в Интернете, лекциях, книге «C# и платформа .NET 3.0» (Эндрю Троелсен), книге «Профессиональное программирование на VBA в Excel 2002» (Джон Уокенбах), книге «Совершенный код» (Стив Макконнелл).

Ответы на вопросы должны быть полными, но, по возможности, не избыточными!

1.Алгоритмы сортировки (не менее трех)

Алгоритмы сортировки

Проблема упорядочивания данных с практической точки зрения:

достоинства и недостатки пяти различных методов сортировки.

Сортировка применяется во всех без исключения областях программирования,

будь то базы данных или математические программы.

Практически каждый алгоритм сортировки можно разбить на три части:

- сравнение, определяющее упорядоченность пары элементов;

- перестановку, меняющую местами пару элементов;

- собственно сортирующий алгоритм, который осуществляет сравнение и

перестановку элементов до тех пор, сока все элементы множества не будут

упорядочены.

Подобными свойствами обладают и те пять алгоритмов сортировки, которые

рассмотрены ниже. Они отобраны из множества алгоритмов, потому что,

во-первых, наиболее часто используются, а во-вторых, потому что большинство

остальных алгоритмов является различными модификациями описанных здесь.

Метод пузырька.

( метод назван также обменной сортировкой с выбором) .

Идея этого метода отражена в его названии. Самые легкие элементы массива

"всплывают" наверх, самые "тяжелые" - тонут. Алгоритмически это можно

реализовать следующим образом. Мы будем просматривать весь массив "снизу

вверх" и менять стоящие рядом элементы в там случае, если "нижний" элемент

меньше, чем "верхний". Таким образом, мы вытолкнем наверх самый "легкий”

элемент всего массива. Теперь повторим всю оперно для оставшихся

неотсортироваными N-1 элементов (т.е. для тех, которые лежат "ниже"

первого. Как видно, алгоритм достаточно прост, но, как иногда замечают, он

является непревзойденным в своей неэффективности. Немного более

эффективным, но таким наглядным является второй метод.

Сортировка выбором

На этот раз при просмотре мaccива мы будем искать наименьший элемент,

Сравнивая его с первым. Если такой элемент найден, поменяем его местами с

первым. Затем повторим эту операцию, но начнем не с первого элемента, а со

второго. И будем продолжать подобным образом, пока не рассортируем весь

массив.

Метод Шелла

Этот метод был предложен автором Donald Lewis Shеll в 1959 г. Основная идея

этого алгоритма заключается в том, чтобы в начале ycтpанить массовый

беспорядок в массиве, сравнивая далеко стоящие друг от друга элементы. Как

видно, интервал между сравниваемыми элементами (gap) постепенно уменьшается

до единицы. Это означает, что на поздних стадиях сортировка сводится просто

к перестановкам соседних элементов (если, конечно, такие перестановки

являются необходимыми).

Сортировка пузырьком

Сортировка простыми обменамисортиро́вка пузырько́м (англ. bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²).

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

Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим наибольшим элементом, а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма).

.

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

Псевдокод объединённого алгоритма сортировки пузырьком и сортировки выбором (устойчивая реализация):

FOR J=1 TO N-1 STEP 1

F=0

MIN=J

FOR I=J TO N-J STEP 1

IF Y[I]>Y[I+1] THEN SWAP Y[I],Y[I+1]:F=1

IF Y[I]<Y[MIN] THEN MIN=I

NEXT I

IF F=0 THEN EXIT FOR

IF MIN<>J THEN SWAP Y[J],Y[MIN]

NEXT J

Возьмём массив с числами «5 1 4 2 8» и отсортируем значения по возрастанию, используя сортировку пузырьком. Выделены те элементы, которые сравниваются на данном этапе.

Первый проход:

(5 1 4 2 8) (1 5 4 2 8), Здесь алгоритм сравнивает два первых элемента и меняет их местами.

(1 5 4 2 8) (1 4 5 2 8), Меняет местами, так как 5 > 4

(1 4 5 2 8) (1 4 2 5 8), Меняет местами, так как 5 > 2

(1 4 2 5 8) (1 4 2 5 8), Теперь, ввиду того, что элементы стоят на своих местах (8 > 5), алгоритм не меняет их местами.

Второй проход:

(1 4 2 5 8) (1 4 2 5 8)

(1 4 2 5 8) (1 2 4 5 8), Меняет местами, так как 4 > 2

(1 2 4 5 8) (1 2 4 5 8)

(1 2 4 5 8) (1 2 4 5 8)

Теперь массив полностью отсортирован, но алгоритм не знает так ли это. Поэтому ему необходимо сделать полный проход и определить, что перестановок элементов не было.

Третий проход:

(1 2 4 5 8) (1 2 4 5 8)

(1 2 4 5 8) (1 2 4 5 8)

(1 2 4 5 8) (1 2 4 5 8)

(1 2 4 5 8) (1 2 4 5 8)

Теперь массив отсортирован и алгоритм может быть завершён.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]