Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПМ 01. 09.02.04 МУ ПЗ и СР-МДК 01.02 Методы и средства приектирования ИС (Олюнина) ИС-12.docx
Скачиваний:
131
Добавлен:
21.03.2016
Размер:
1.14 Mб
Скачать

3 . Методические указания

1. Формирование массива осуществляется с помощью датчика случайных чисел.. В массиве должны быть записаны и положительные и отрицательные элементы. Например, оператор a[I]=rand()%100-50; формирует псевдослучайное число из диапазона [-50;49]. 2. Вывод результатов должен выполняться после выполнения каждого задания. Элементы массива рекомендуется выводить в строчку, разделяя их между собой пробелом.

4. Содержание отчета:

  1. Постановка задачи (общая и конкретного варианта).

  2. Текст программы.

  3. Результаты тестов.

5.Контрольные вопросы:

  1. Что такое сортировка?

  2. Что представляет собой сортировка методом пузырька? Почему она так называется?

  3. Как вы считаете, каковы преимущества сортировки методом пузырька?

  4. Объясните, почему алгоритм пузырька применяется только для небольших массивов?

Практическая работа № 5

Сортировка массивов методом вставок

Цель работы: нучиться сортировать одномерные и двумерные массивы методом вставок.

  1. Теоретические сведения.

Сортировка вставками – простой алгоритм сортировки, преимущественно использующийся в учебном программировании. К положительной стороне метода относится простота реализации, а также его эффективность на частично упорядоченных последовательностях, и/или состоящих из небольшого числа элементов. Тем не менее, высокая вычислительная сложность не позволяет рекомендовать алгоритм в повсеместном использовании.

Рассмотрим алгоритм сортировки вставками на примере колоды игральных карт. Процесс их упорядочивания по возрастанию (в колоде карты расположены в случайном порядке) будет следующим. Обратим внимание на вторую карту, если ее значение меньше первой, то меняем эти карты местами, в противном случае карты сохраняют свои позиции, и алгоритм переходит к шагу 2. На 2-ом шаге смотрим на третью карту, здесь возможны четыре случая отношения значений карт:

  1. первая и вторая карта меньше третьей;

  2. первая и вторая карта больше третьей;

  3. первая карта уступает значением третьей, а вторая превосходит ее;

  4. первая карта превосходит значением третью карту, а вторая уступает ей.

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

Рассмотрим на примере числовой последовательности процесс сортировки методом вставок. Клетка, выделенная темно-серым цветом – активный на данном шаге элемент, ему также соответствует i-ый номер. Светло-серые клетки это те элементы, значения которых сравниваются с i-ым элементом. Все, что закрашено белым – не затрагиваемая на шаге часть последовательности.

Этот метод похож на метод пузырька. Происходит такое же разбиение массива на отсортированную и не отсортированную части, но перемещение первого элемента остатка на принадлежащее ему место в итоге делается не сравнением двух соседних элементов, а с помощью метода двоичного поиска, который удобно оформить в виде отдельной процедуры. 

Реализация алгоритма сотрировки вставками на языке С++.

int i,j;

for(i=1;i<size;i++){

       int tmp = mas[i];

       for(j=0;j>0&&mas[j-1]>tmp;j--){

       mas[j]=mas[j-1]

}

mas[j]= tmp;

}

Схема алгоритма методом сортировки включением представлена на рис. 3.

 Рисунок 3. Блок-схема алгоритма прямым включением

  1. Постановка задачи:

  1. Отсортировать одномерный и двумерный массивы методом вставок по возрастанию.

  2. Массивы сгенероровать с помощью генератора случайных чисел, вывести на печать.

  3. Методические указания

1. Формирование массива осуществляется с помощью датчика случайных чисел.. В массиве должны быть записаны и положительные и отрицательные элементы. Например, оператор a[I]=rand()%100-50; формирует псевдослучайное число из диапазона [-50;49]. 2. Вывод результатов должен выполняться после выполнения каждого задания. Элементы массива рекомендуется выводить в строчку, разделяя их между собой пробелом.