Обработка одномерных массивов.ppt
- Количество слайдов: 16
Обработка одномерных массивов
Рассмотрим типовые задачи обработки одномерных массивов. Для массивов других размерностей применяются аналогичные алгоритмы, которые несколько усложняются использованием вложенных циклов. Условимся, что в векторе x содержится n элементов. Над n элементами вектора x выполним следующие действия. 1. Вычисление суммы элементов: S: =0 ; for i=1 to n do S: =S+x[i]; ‘ накопление суммы в S 2. Вычисление произведения элементов: P: =1; for i=1 to n do P: =P*x(i); ‘ накопление произведения в P
Пример 1. Вычислить значение суммы для выражения: начало 1 x - массив исходных данных k - переменная цикла m - начальный индекс переменной цикла n - конечный индекс переменной цикла Y - результат n, x, m 2 y=x 7 3 k=m, n 4 5 y 6 конец X – массив из n элементов
Пример 2. В целочисленном одномерном массиве, состоящем из 15 элементов, найти произведение элементов с нечетными номерами. начало 1 Х – массив из 15 элементов Х начало 2 1 Х Р=1 Х – массив из 15 элементов 2 3 Р=1 i=1, 15, 1 4 3 i=1, 15, 2 4 Нет 5 Да P=P*Xi 6 5 Р Р 7 6 конец остаток от дел. i на 2 = 1
3. Подсчет количества элементов, удовлетворяющих какому-либо условию. Пример 3. Подсчитать количество четных чисел в целочисленном массиве Х, состоящем из 20 элементов. Х - массив исходных данных К – счетчик количества четных элементов в массиве, результат начало 1 Х – массив из 20 элементов Х 2 K=0 3 i=1, 20 Нет остат. от дел. Хі на 2 = 0 4 5 Да K=K+1 6 К 7 конец
4. Поиск элемента с заданным значением. Найти элемент — это значит выяснить его номер в массиве. Пример 4. Найти номер первого из элементов массива Х, имеющего нулевое значение. Если таких элементов нет, вывести соответствующее сообщение. Комментарий Поскольку в данном примере требуется найти только одно, самое первое, значение, можно использовать цикл с постусловием. Таким же образом можно было бы искать последний элемент, начиная поиск с конца массива и уменьшая на 1 значение переменной i. Если нужно знать номера всех элементов, имеющих заданное значение, то для их хранения придется использовать дополнительный массив, а цикл repeat заменить циклом for. начало 1 Х – массив из N элементов N, Х 2 i=0 3 i=i+1 4 Нет Да 5 i=n v xi=0 Да Нет xi=0 6 7 «нет нулевых» i 8 конец
начало 1 1 Х – массивы из N элементов N, X 2 2 k=0 i=1, N 3 Нет 3 i=1, N xi=0 Да Да 4 4 Нет i<=N 5 6 Нет xi=0 5 «нет нулевых» i 7 конец Да k=k+1 Yk=i 6 Y 7 конец Х, Y – массивы из N элементов
В процессе поиска можно выводить искомые номера на экран непосредственно в цикле for. В этом случае необходимость использования дополнительного массива отпадает. i=1, N Нет xi=0 Да i
5. Поиск максимального элемента и его номера. Пример 5. Найти максимальный элемент массива Х и его номер. Переменная max хранит значение максимума, k — его номер в массиве. начало 1 N, X 2 max=x 1 k=1 3 i=2, N 4 Нет 5 Да xi>ma x max=xi k=i 6 max, k 7 конец X –массив из N элементов
6. Перестановки элементов в массиве При перестановках элементы массива меняются местами друг с другом. Их значения в результате перестановок не изменяются, но изменяется порядок следования элементов в массиве. При выполнении перестановок обычно используется буферная переменная которая служит для временного хранения одного из элементов. Например, переставим местами первый и второй элементы массива а используя для временного хранения переменную р: р=a 1 : a 1=a 2 : a 2=р В случае перестановки строк или столбцов матрицы необходимо переставить местами все их элементы. При этом вовсе не обязательно использовать в качестве буфера обмена целый массив. Одной переменной вполне достаточно, т. к. перестановки всех элементов выполняются по очереди. Например, переставим местами все элементы первой и второй строки: For j=1 to N р = a 1, j : a 1, j=a 2, j : a 2, j=р
7. Циклический сдвиг элементов массива влево и вправо Под циклическим сдвигом элементов массива подразумевается, что все элементы массива сдвигаются на один элемент влево или вправо, а первый (последний) элемент становится последним (первым). Циклический сдвиг может также выполняться на 2, 3 …К позиций. Для этого действия, выполняемые в примерах, нужно повторить нужное количество раз, используя для этого вложенные циклы. Пример 6. Выполнить циклический сдвиг элементов массива влево на 1 позицию. Пример 7. Выполнить циклический сдвиг элементов массива вправо на 1 позицию.
8. Сортировка массива Сортировка — это процесс упорядочивания набора данных одного типа по возрастанию или убыванию значения какого-либо признака. При сортировке массива его элементы меняются местами таким образом, что их значения оказываются упорядоченными или по возрастанию, или по убыванию. Если в массиве есть одинаковые элементы, то говорят о сортировке по неубыванию или по невозрастанию. Классификация методов сортировки 1. Обменная сортировка Идея: если два элемента расположены не по порядку, то они меняются местами. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены. Методы: метод пузырька, модифицированный метод пузырька, сортировка со слиянием (параллельная сортировка Бэтчера), сортировка с разделением (быстрая сортировка Хоара), поразрядная сортировка.
2. Сортировка выбором Идея: выбирается наименьший (или наибольший) элемент и каким-либо образом отделяется от остальных, затем выбирается наименьший (или наибольший) элемент из оставшихся и т. д. Методы: простой выбор, выбор из дерева, пирамидальная сортировка. 3. Сортировка вставками Идея: элементы просматриваются по одному и каждый новый элемент вставляется в подходящее место среди ранее упорядоченных элементов. Методы: простая вставка, модифицированная вставка, бинарная вставка, двухпутевая вставка, сортировка с убывающим шагом (сортировка Шелла). 4. Сортировка подсчетом Идея: каждый элемент сравнивается со всеми остальными; окончательное положение элемента определяется подсчетом числа меньших элементов. Методы: сортировка сравнением и подсчетом, распределяющий подсчет.
Пример 8. начало Расположить элементы массива Х из N элементов по возрастанию. Задачу решить методом «пузырька» . Особенностью данного метода является сравнение, а затем, если нужно, и перестановка соседних элементов. При таком подходе на первом шаге внешнего цикла самый большой элемент окажется самым последним, на втором шаге самый большой из оставшихся элементов окажется предпоследним и т. д. М – количество неупорядоченных элементов. 1 Х – масив из N элементов N, Х 2 М=N 3 i =1, М-1 6 Нет 4 M=M-1 Xi>Xi+ 5 1 Да p=Xi Xi =Xi+1= p 7 Да M>1 8 Нет Вывод X 9 конец
Простая линейная сортировка (сортировка выбором) Идея линейной сортировки по возрастанию заключается в том, чтобы, последовательно просматривая весь массив, отыскать наименьший элемент и поменять его местами с первым элементом. Затем просматриваются элементы массива, начиная со второго, снова находится наименьший, который, в свою очередь, меняется местами со вторым и так далее. начало 1 2 i=1, n-1 3 j=i+1, n 4 Нет 5 Хi> Хj Да P=Xi Xi=Xj Xj=P Пример 9. Расположить элементы массива Х по возрастанию. Задачу решить методом простой линейной сортировки. Х – массив из N элементов N, Х 6 Вывод Х 7 конец
Обработка одномерных массивов.ppt