
- •Ответы на вопросы должны быть полными, но, по возможности, не избыточными!
- •1.Алгоритмы сортировки (не менее трех)
- •Сортировка пузырьком
- •Сортировка выбором
- •Сортировка Шелла
- •Выбор длины промежутков
- •2. Методы оптимизации структуры и выполнения программного кода
- •3. Структурированное расположение текста
- •3.1 Длина строки
- •3.2 Перенос длинных строк
- •Пустые строки
- •Пустые строки
- •4. Механизмы доступа к базам данных
- •5.Объектная модель Excel
- •Структура проекта vba
- •7. Основные понятия объектно-ориентированного программирования
- •8.Принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм
- •9. Принципы экстремального программирования
Экзаменационные вопросы по курсу «Информатика и программирование»
Алгоритмы сортировки (не менее трех)
Методы оптимизации структуры и выполнения программного кода
Методы форматирования кода
Механизмы доступа к базам данных
Объектная модель VBA и Microsoft Excel
Объектная модель Visual C#
Основные понятия объектно-ориентированного программирования: объект, класс, метод
Принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм
Принципы экстремального программирования
Ответы на вопросы можно найти в Интернете, лекциях, книге «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)
Теперь массив отсортирован и алгоритм может быть завершён.