Сортировка методом простого включения (сдвиг-вставка, вставками, вставка и сдвиг)
Хотя этот метод сортировки намного менее эффективен, чем более сложные алгоритмы (такие как быстрая сортировка), у него есть ряд преимуществ:
· прост в реализации
· эффективен на небольших наборах данных, на наборах данных до десятков элементов может оказаться лучшим
· эффективен на наборах данных, которые уже частично отсортированы
· это устойчивый алгоритм сортировки (не меняет порядок элементов, которые уже отсортированы)
· может сортировать список по мере его получения
· не требует временной памяти, даже под стек
На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора.
//Описание функции сортировки методом простого включения
void InsertSort (int k,int x[max]) {
int i,j, temp;
for (i=0;i<k;i++) {
//цикл проходов, i - номер прохода
temp=x[i];
//поиск места элемента
for (j=i-1; j>=0 && x[j]>temp; j--)
x[j+1]=x[j];//сдвигаем элемент вправо, пока не дошли
//место найдено, вставить элемент
x[j+1]=temp;
}
}
Задания
1.Отсортируйте по возрастанию методом «пузырька» одномерный целочисленный массив, заданный случайными числами на промежутке [-100; 100). Выведите на экран исходный и отсортированный массивы.
2.Отсортируйте по возрастанию методом простого выбора одномерный вещественный массив, заданный случайными числами на промежутке [0; 50). Выведите на экран исходный и отсортированный массивы.
3.Отсортируйте по возрастанию методом простого включения одномерный целочисленный массив, заданный с клавиатуры. Выведите на экран исходный и отсортированный массивы.
Домашние задания
1.Отсортируйте по убыванию методом простого обмена одномерный целочисленный массив, заданный случайными числами на промежутке [-100; 100).
2.Отсортируйте по убыванию методом простого выбора одномерный вещественный массив, заданный случайными числами на промежутке [0; 50). Выведите на экран исходный и отсортированный массивы.
3.Отсортируйте по убыванию методом простого включения одномерный целочисленный массив, заданный с клавиатуры. Выведите на экран исходный и отсортированный массивы.
4. Индивидуальное задание. Номер варианта определяется по журналу. Напишите программу, оформив её в виде функций генерации, вывода и обработки массивов. Предусмотрите ввод количества элементов массива и ввод границ диапазона случайных чисел с клавиатуры. Для решения задания используйте «однопроходные» алгоритмы, позволяющие получить результат после однократного просмотра массива.
Варианты индивидуального задания
№ | Задание |
1. | Найти максимальный четный из данных n ненулевых целочисленных элементов массива. Если требуемые элементы отсутствуют, то вывести 0. |
2. | Даны числа a, b (0 < a < b) и набор из n элементов. Найти минимальный из элементов, содержащихся в интервале (a, b). Если требуемые элементы отсутствуют, то вывести – 1. |
3. | Дан массив А, состоящий из n элементов. Вывести номер первого и последнего из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i]< A[n]. Если таких элементов нет, то вывести 0. |
4. | Найти номер последнего максимального из массива данных n целочисленных элементов. |
5. | Найти минимальный четный из данных n ненулевых целочисленных элементов массива. Если требуемые элементы отсутствуют, то вывести 0. |
6. | Дан набор из n целочисленных элементов. Найти максимальное количество подряд идущих максимальных элементов. |
7. | Дано вещественное число R и массив размера n. Найти два элемента массива, сумма которых наименее близка к данному числу R. |
8. | Найти минимальный положительный из данных n элементов. Если требуемые элементы отсутствуют, то вывести 0. |
9. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к четным числам последний элемент. Начальный и последний элементы массива не изменять. |
10. | Дан набор из n целочисленных элементов. Найти количество элементов, расположенных после последнего максимального. |
11. | Дан набор из n целочисленных элементов. Найти количество элементов, содержащихся между первым и последним минимальным. Если в наборе имеется единственный минимальный элемент, то вывести 0. |
12. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к четным числам первый элемент. Начальный и последний элементы массива не изменять. |
13. | Найти номер максимального отрицательного из данных n элементов. Если требуемые элементы отсутствуют, то вывести 0 |
14. | Найти номера всех максимальных из массива данных n целочисленных элементов. |
15. | Дан набор из n целочисленных элементов. Найти количество элементов, расположенных перед первым минимальным. |
16. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к нечетным числам первый элемент. Начальный и последний элементы массива не изменять. |
17. | Найти количество минимальных и количество максимальных элементов в массиве из данных n целочисленных элементов. |
18. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, умножив все положительные элементы на минимальный элемент. |
19. | Найти минимальный нечетный из данных n ненулевых целочисленных элементов массива. Если требуемые элементы отсутствуют, то вывести 0. |
20. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, разделив на 10 все элементы, оканчивающиеся хотя бы одним нулем. |
21. | Найти максимальный нечетный из данных n ненулевых целочисленных элементов массива. Если требуемые элементы отсутствуют, то вывести 0. |
22. | Дан целочисленный массив, состоящий из n элементов. Определите, есть ли в массиве элемент, равный среднему арифметическому всех элементов. |
23. | Дан целочисленный массив, состоящий из n элементов. Замените нулевой элемент значением минимального, а последний – значением максимального элементов. |
24. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, прибавив к нечетным числам последний элемент. Начальный и последний элементы массива не изменять. |
25. | Дан набор из n целочисленных элементов. Найти количество элементов, содержащихся между первым и последним максимальным. Если в наборе имеется единственный максимальный элемент, то вывести 0. |
26. | Дан целочисленный массив, состоящий из n элементов. Преобразовать его, умножив все его элементы на минимальный элемент. Минимальный элемент массива не изменять. |
27. | Найдите максимальную разницу между соседними элементами вещественного массива. |
28. | Замените единицами все простые элементы массива натуральных чисел. |
Дата добавления: 2015-02-16; просмотров: 1797;