
- •1) Системы счисления. Перевод чисел из одной системы счисления в другую
- •4) Арифметические выражения. Приемы, используемые для минимизации вычислений: вынесение общих множителей за скобки, использование дополнительных переменных
- •5) Ввод чисел с клавиатуры и вывод чисел в окно программы, формат ввода и вывода.
- •6) Средства разработки программ разветвляющейся структуры. Условные и безусловные операторы перехода.
- •8) Рекурсия. Использование рекурсии для вычисления числа Фибоначчи.
- •9) Уточнение корней уравнений: метод простых итераций, метод половинного деления, метод касательных.
- •10)Организация программ со структурой вложенных циклов. Транспонирование матриц
- •11)Массивы. Сохранение результатов вычислений в массиве.
- •12)Метод сортировки массива вставками.
- •13) Метод прямого обмена (метод пузырька) и его модификация.
- •14) Метод прямого выбора и его модификации: сортировка методом поиска минимального/максимального элемента, сортировка методом поиска индекса
- •15) Указатели
- •16) Матрицы. Обработка матриц. Многомерные статические массивы.
- •17) Массивы указателей. Динамические массивы. Операции new, new [], delete, delete [], malloc, free.
- •18) Программирование с использованием подпрограмм. Объявление функций. Глобальные переменные. Передача параметров. Передача массивов в качестве параметров.
- •19) Рекурсивные функции.
- •20) Перегружаемые функции, параметры со значениями по умолчанию, функции с переменным числом параметров.
- •21) Указатели на функции, передача указателей на функции в качестве параметров.
- •22) Классы. Конструктор и деструктор. Квалификаторы прав доступа. Указатель this.
- •23) Перегрузка стандартных операций. Наследование классов.
- •24) Открытое наследование, полиморфизм классов. Виртуальные функции и абстрактные классы.
- •25) Шаблоны функций и классов.
- •26)Наследование классов. Множественное наследование. Виртуальные классы.
- •Приложение. Полный код программы по транспонированию матрицы.
12)Метод сортировки массива вставками.
На каждом следующем i-том шаге, i=1,2, 3,…,n-2, значение из (i+1)-ой ячейки массива путем обмена положением с числом из предыдущей ячейки продвигают в сторону уменьшения индекса ячейки до тех пор, пока не окажется, что в предыдущей ячейке находится не большее число. Из сказанного следует, что при реализации метода прямого включения(вставками) внешний цикл должен выполняться n-1 раз, а максимально возможное число выполнений внутреннего цикла, в теле которого должны выполняться сравнения и перестановки чисел, будет увеличиваться от 1 до n-1.
Исходный код функции:
void InsertionSort(int *input_data, int length) {
int i, j, temp;
for (i = 1; i < length; i++)
{
temp = input_data[i]; // Запоминаем элемент, с которым будем сравнивать элемент из последующего цикла
for (j = i - 1; j >= 0; j--)
{
if (input_data[j] < temp)
break;
// Меняем элементы местами.
input_data[j + 1] = input_data[j];
input_data[j] = temp;
}
}
}
13) Метод прямого обмена (метод пузырька) и его модификация.
Алгоритм сортировки пузырьковым методом получил свое название от способа, используемого для упорядочивания элементов массива. Здесь выполняются повторяющиеся операции сравнения и при необходимости меняются местами смежные элементы. При этом элементы с меньшими значениями постепенно перемещаются к одному концу массива, а элементы с большими значениями — к другому. Пузырьковая сортировка выполняется путем нескольких проходов по массиву, во время которых при необходимости осуществляется перестановка элементов, оказавшихся "не на своем месте". Количество проходов, гарантирующих получение отсортированного массива, равно количеству элементов в массиве, уменьшенному на единицу.
void BubbleSort(int *input_data, int length) {
for (int i=1; i<length; i++)
for (int j= length - 1; j >=i; j--) {
if ( input_data[j-1] > input_data[j]) { //Элементы неупорядочены.
// Меняем элементы местами.
int temp = input_data[j-1];
input_data[j-1] = input_data[j];
input_data[j] = temp;
}
}
}
Модифицированный метод пузырька.
При использовании метода пузырька массив может оказаться упорядоченным уже после i-го шага (i<n-1),то есть возможно выполнение внешнего цикла не n-1 раз, а меньше, когда станет известно, что массив уже упорядочен. Такая проверка основывается на следующем: если при выполнении внутреннего цикла не было ни одной перестановки, значит массив уже упорядочен и можно выйти из внешнего цикла. В качестве признака, выполнялась ли перестановка, используют переменную булевского типа: до входа во внутренний цикл ей дают одно значение, например, false, а при выполнении перестановки – другое, например, true. Очевидно, эффект при использовании модифицированного метода пузырька по сравнению с не модифицированным методом в ускорении процесса сортировки будет наблюдаться, если исходная последовательность чисел близка к упорядоченности в нужном направлении. В предельном случае, когда массив уже упорядочен нужным образом, тело внешнего цикла будет выполнено только один раз.
i=1;
Исходный код функции:
do {
flag=0;
for (j=0; j<n-I; j++)
if (x[j]>x[j+1])
{
d=x[j];
x[j]=x[j+1];
x[j+1]=d;
flag=1;
}
i++;
}
while(flag);