
- •1. Внутренняя сортировка данных методом подсчета. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •2. Внутренняя сортировка данных методом выбора. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •3. Внутренняя сортировка данных методом простых вставок. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •4. Внутренняя сортировка данных методом Шелла. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •5. Внутренняя сортировка данных методом «пузырька». Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •6. Внутренняя сортировка данных «быстрым» методом. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •7. Численное решение уравнения методом половинного деления (дихотомии). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Метод хорд
- •9. Численное решение уравнения методом Ньютона (касательных). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Метод Ньютона
- •10. Численное решение уравнения модифицированным методом Ньютона. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Модифицированный метод Ньютона
- •Модифицированный метод Ньютона (метод секущих)
- •Метод ньютона-рафсона
- •11. Численное решение уравнения методом секущих. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Условие сходимости
- •12. Численное решение уравнения методом простых итераций. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод простых итераций
- •13. Численное интегрирование методом прямоугольников. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод прямоугольников
- •Пример реализации
- •14. Численное интегрирование методом трапеций. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод трапеций
- •15. Численное интегрирование методом парабол. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Формула
- •Представление в виде метода Рунге-Кутта
- •Составная формула (формула Котеса)
- •16. Численное интегрирование методом Гаусса-Лежандра. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •17. Численное интегрирование методом Монте-Карло. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Интегрирование методом Монте-Карло
- •Обычный алгоритм Монте-Карло интегрирования
- •Геометрический алгоритм Монте-Карло интегрирования
- •Использование выборки по значимости
- •Оптимизация Применение в физике
- •18. Построение кривой по точкам. Интерполяционный полином Лагранжа. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Определение
- •Применения
- •Случай равномерного распределения узлов интерполяции
- •Погрешность интерполирования
- •Выбор узлов интерполяции
- •20. Построение кривой по точкам. Интерполяция кубическими сплайнами. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Интерполяция кубическими сплайнами
- •Введение
- •Постановка математической задачи
- •Изложение метода
- •Метод прогонки
- •Пример: интерполирование неизвестной функции
- •Ошибка интерполяции
- •Пример: интерполяция синуса
- •Дискретное преобразование Фурье
- •Пример использования
- •Погрешность вычислений
- •Программная реализация
5. Внутренняя сортировка данных методом «пузырька». Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
Сортировка простыми обменами, сортировка пузырьком — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²), Число сравнений: N2
Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более эффективные алгоритмы сортировки. В то же время метод сортировки обменами лежит в основе некоторых более совершенных алгоритмов, таких как шейкерная сортировка, пирамидальная сортировка и быстрая сортировка.
Сортировка очень медленная, но если скорость не главное, можно применить и её.
Принцип действия:
Сортировка обменом основана на многократном обходе массива чисел a1, a2,… an. При каждом обходе сравниваются два соседних элемента ai и ai+1. Если элементы неупорядочены, то они меняются местами. В следствие последовательных перестановок, например, при упорядочивании массива по возрастанию, постепенно продвигается вправо и становится на свое место максимальный элемент массива. При втором обходе – длина массива уменьшается на 1 (исключается последний элемент) и процесс повторяется. Последний обход выполняется для массива из 2 элементов.
Пример:
Отсортировать массив чисел M={5, 4, 8, 2, 9} по возрастанию.
1-ый просмотр. Рассматривается весь массив.
{i - номер первого элемента проверяемой (сравниваемой) пары}.
i=1 |
5 |
> |
4 |
|
8 |
|
2 |
|
9 |
меняем местами |
|||||||||
i=2 |
4 |
|
5 |
< |
8 |
|
2 |
|
9 |
не меняем |
|||||||||
i=3 |
4 |
|
5 |
|
8 |
> |
2 |
|
9 |
|
|||||||||
i=4 |
4 |
|
5 |
|
2 |
|
8 |
< |
9 |
не меняем |
Число 9 встало на свое место и в последующих просмотрах его можно не рассматривать.
2-ой просмотр. Рассматривается весь массив, с первого элемента до предпоследнего.
i=1 |
4 |
< |
5 |
|
2 |
|
8 |
|
9 |
не меняем |
|||||||||
i=2 |
4 |
|
5 |
> |
2 |
|
8 |
|
9 |
меняем |
|||||||||
i=3 |
4 |
|
2 |
|
5 |
|
8 |
|
9 |
не меняем |
Число 8 также встало на свое место. Говорят, «всплыл» еще один «пузырек».
3-ий просмотр. Рассматривается часть массива без последних двух элементов.
i=1 |
4 |
> |
2 |
|
5 |
|
8 |
|
9 |
|
|||||||||
i=2 |
2 |
|
4 |
< |
5 |
|
8 |
|
9 |
не меняем |
Число 5 встало на свое место.
i=1 |
2 |
< |
4 |
|
5 |
|
8 |
|
9 |
не меняем |
В итоге имеем отсортированный массив:
2 |
|
4 |
|
5 |
|
8 |
|
9 |
Пример программы:
#include<stdio.h>
#define N 1000
int main() {
int n, i, j;
int a[N];
// считываем количество чисел n
scanf("%d", &n);
// считываем n чисел
for(i = 0 ; i < n; i++) {
scanf("%d", &a[i]);
}
for(i = 0 ; i < n ; i++) {
// сравниваем два соседних элемента.
for(j = 0 ; j < n - i - 1 ; j++) {
if(a[j] > a[j+1]) {
// если они идут в неправильном порядке, то
// меняем их местами.
int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp;
}
}
}
}