- •1. Объявление структуры, обращение к элементам структуры, объявление массива структур.
- •2.Объявление пользовательского (typedef) типа структуры. Объявление переменных и массивов данного типа. Привести примеры.
- •3.Ввод-вывод массива структур. Привести пример программы подсчета среднего арифметического по числовому полю в массиве структур.
- •4.Общий формат объявление функции пользователя. Прототип функции. Типы возвращаемых значений. Привести примеры.
- •5.Формальные и фактические параметры в функции. Основные способы передачи параметров в функцию.
- •6.Способы передать в функцию массивов. Привести примеры.
- •7.Привести примеры функции вывода на печать элемента массива структур по его порядковому номеру.
- •8.Привести пример функции, которая возвращает сумму (произведение, среднеарифметическое) элементов в массиве.
- •9.Рекурсия. Определение рекурсии. Привести примеры рекурсивных функций
- •10.*Указатели на функцию. Примеры указателей на функцию.
- •11. *Пользовательские функции с переменным числом параметров
- •12. Параметры функции main(). Привести примеры обращения к параметрам функции main()
- •13. Понятие сортировки. Основные типы алгоритмов сортировки. Оценка эффективности алгоритмов сортировки
- •14. Схема и алгоритм сортировки методом выбора
- •15. Пузырёк
- •16. Алгоритм вставок
- •17.*Улучшенные алгоритмы сортировки: Шелла, быстрая сортировка
- •18. *Модели динамических структур данных: стек, очередь
- •20. Файл. Понятие и объявление переменной файлового типа
- •21. Понятие файла и потока данных. Стандартные потоки
- •22.Виды файлов. Файлы последовательного доступа.
- •23.Алгоритм и программа создания файла записей (структур).
- •30. *Функции потокового ввода-вывода.
13. Понятие сортировки. Основные типы алгоритмов сортировки. Оценка эффективности алгоритмов сортировки
Под сортировкой обычно понимают процесс перестановки объектов данного множества в определенном порядке.
Сортировки обычно разделяют на две категории: сортировка массивов и сортировка последовательных файлов. Их часто называют внутренней и внешней сортировкой, так, как массивы располагаются во внутренней памяти ЭВМ, а файлы хранятся в более медленной, но более вместительной «внешней» памяти, т.е. на запоминающих устройствах с механическим передвижением (дисках, лентах).
Простые методы сортировки – выбором, пузырьковая, вставками
Улучшенные – шелла, Хоара, слиянием
Алгоритмы сортировки оцениваются по скорости выполнения и эффективности использования памяти:
Память— ряд алгоритмов требует выделения дополнительной памяти под временное хранение данных
Время— основной параметр, характеризующий быстродействие алгоритма
14. Схема и алгоритм сортировки методом выбора
Шаги алгоритма:
находим минимальное значение в текущем списке
производим обмен этого значения со значением на первой неотсортированной позиции
теперь сортируем хвост списка, исключив из рассмотрения уже отсортированные элементы
Пирамидальная сортировка сильно улучшает базовый алгоритм, используя структуру данных «куча» для ускорения нахождения и удаления минимального элемента.
Существует также двунаправленный вариант сортировки методом выбора, в котором на каждом проходе отыскиваются и устанавливаются на свои места и минимальное, и максимальное значения.
Пример
void selection(Item a[],int l,int r){
for(int i=l;i<r;i++){
int min=i;
for(int j=i+1;j<=r;j++){
if( a[j]< a[min])
min=j;
}
if(min!=i)
exch(a[i],a[min]);
}
15. Пузырёк
Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.
// проход сверху вниз
for (j=1; j<=ub; j++) {
if ( a[j-1] > a[j] ) {
x=a[j-1]; a[j-1]=a[j]; a[j]=x;
k=j;
16. Алгоритм вставок
1. В качестве отсортированной части массива принимается первый элемент.
2. Берется очередной элемент из несортированной части. Его значение сохраняется в дополнительной переменной.
3. Осуществляется поиск позиции в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов
4. Для освобождения найденной позиции элементы сдвигаются вправо, после чего на это место вставляется сохраненное ранее значение.
Пункты 2–4 выполняются до полной упорядоченности массива.