Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные_работы_1-7.doc
Скачиваний:
54
Добавлен:
16.11.2019
Размер:
2.11 Mб
Скачать

4Программа пузырьковой сортировки

Часто требуется расположить элементы массива по возрастанию или по убыванию. Это можно сделать с помощью следующей программы:

const int N=5;

int i,j,t,massiv[N];

cout<<RUS("Введите одномерный массив целых чисел:\n");

for(i=0;i<N;i++)cin>>massiv[i]; //ввод массива

for(i=N-1;i>0;i--) //начало сортировки

for(j=0;j<i;j++)

if(massiv[j]>massiv[j+1])

{

t=massiv[j]; //тело внутреннего цикла

massiv[j]=massiv[j+1]; //

massiv[j+1]=t; //

} //конец сортировки

cout<<RUS("\nМассив упорядоченный по возрастанию:\n");

for(i=0;i<N;i++) //вывод массива

cout<<"\nmassiv["<<i<<"] = "<<massiv[i]; //вывод массива

Собственно алгоритм выделен комментариями "начало сортировки" и "конец сортировки". Его суть заключается в последовательной перестановке соседних элементов массива с целью продвижения самого большого элемента в конец массива. Этот процесс поясняется на рис. 1.1. Один проход внутреннего цикла for …(по переменной j) перемещает в конец 1 элемент. На следующем проходе, благодаря уменьшению на 1 переменной внешнего цикла (i), установленный в конце массива элемент уже не рассматривается. Его рассмотрение не изменило бы результата, но выполнение операций требует времени, которое тратить впустую нецелесообразно. Так после выполнения N-2 внутренних циклов массив будет упорядочен по возрастанию.

Тело внутреннего цикла алгоритма решает задачу взаимной перестановки двух элементов массива. Задача решается перемещением значения переменных через третью вспомогательную переменную (t).

j:

0

1

2

3

4

0

2

10

6

1

3

2

6

j:

1

2

3

4

1 0

1

3


t

t

Рис. 1.1

Перемещение самого большого элемента по массиву подобно всплытию пузырька воздуха в воде. Это и определило название алгоритма.

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

Домашнее Задание

Изучите теоретические сведения и подготовьте текст программы по заданию на лабораторную работу. Программа записывается в «черновом» варианте в лекционной тетради. Комментарии должны составлять не менее 10% от текста. Студенты, не выполнившие домашнего задания, не допускаются к выполнению лабораторной работы.

Задание к лабораторной работе №4

Задание 1

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Задание 2

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) сумму элементов массива с нечетными номерами;

2) сумму элементов массива, расположенных между первым и последним отрицательными элементами.

Задание 3

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) максимальный элемент массива;

2) сумму элементов массива, расположенных до последнего положительного элемента.

Задание 1.4

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) минимальный элемент массива;

2) сумму элементов массива, расположенных между первым и последним положительными элементами.

Задание 5

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 целых элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Задание 6

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) номер минимального элемента массива;

2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

Задание 7

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму элементов массива, расположенных между первым и вторым положительными элементами.

Задание 8

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 целых элементов, вычислить:

1) минимальный по модулю элемент массива;

2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.

Задание 9

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) номер минимального по модулю элемента массива;

2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.

Задание 10

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) сумму элементов массива, расположенных после первого положительного элемента.

Задание 11

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) количество элементов массива, больших С (вводится с клавиатуры);

2) произведение элементов массива, расположенных после максимального по модулю элемента.

Задание 12

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) количество отрицательных элементов массива;

2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.

Задание 13

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) количество положительных элементов массива;

2) сумму элементов массива, расположенных после последнего элемента, равного нулю.

Задание 14

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) произведение отрицательных элементов массива;

2) сумму положительных элементов массива, расположенных до максимального элемента.

Задание 15

В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) сумму элементов массива, расположенных после минимального элемента.