Сортировка методом простого включения (сдвиг-вставка, вставками, вставка и сдвиг)

Хотя этот метод сортировки намного менее эффективен, чем более сложные алгоритмы (такие как быстрая сортировка), у него есть ряд преимуществ:

· прост в реализации

· эффективен на небольших наборах данных, на наборах данных до десятков элементов может оказаться лучшим

· эффективен на наборах данных, которые уже частично отсортированы

· это устойчивый алгоритм сортировки (не меняет порядок элементов, которые уже отсортированы)

· может сортировать список по мере его получения

· не требует временной памяти, даже под стек

На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора.

//Описание функции сортировки методом простого включения

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; просмотров: 1803;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.