Transcript Массивы
Массивы 1 Опр. Массивом называется совокупность однотипных данных, связанных общим именем. Основные характеристики массива: 1. Имя массива 2. Тип компонентов массива 3. Размерность – количество измерений массива (одномерный, двумерный, трехмерный) 4. Порядок нумерации компонентов в массиве (с 1 до последнего) 5. Количество компонентов – размер массива 2 Основные классы задач, которые связаны с последовательной обработкой элементов массива: 1. 2. 3. 4. Задачи ввода и вывода Вычисления суммы, произведения, количества, среднего арифметического и т.п. Поиск данных в массиве по заданному признаку, поиск максимального и минимального элементов Изменение порядка и значений – удаление, вставка, перемещение элементов 3 Обобщенная схема работы с массивом: 1. Заполнение массива 2. Обработка массива 3. Вывод результата 3.1. вывод одиночного значения (например, сумма, произведение, количество элементов и т.п.) 3.2. вывод массива 4 Одномерный массив 5 1. Определение массива Введем обозначения: А – имя массива а[i] – элемент массива i – номер (индекс) элемента массива N – количество элементов в массиве 6 Последовательную обработку массивов позволяет обеспечить цикл с параметром, который осуществляет прямой доступ к каждому элементу массива. Заполнение массива 7 Последовательную обработку массивов позволяет обеспечить цикл с параметром, который осуществляет прямой доступ к каждому элементу массива. Вывод массива 8 2. Вычисления суммы, произведения, количества элементов массива Перед выполнением цикла необходимо задать начальное значение искомой величины. В цикле обработки массива искомая величина будет изменяться по определенному правилу. 9 3. Поиск элементов удовлетворяющих заданному условию Если элемент удовлетворяет условию поиска, то производится его обработка. Виды обработки: 1. Вывод элемента 2. Изменение его значения 3. Изменение некоторой другой величины (сумма, произведение, количество) 10 Шаблон блок-схемы 11 Результат – вывод элемента Найти все положительные элементы в массиве 12 Результат – изменение элементов массива Все положительные элементы в массиве умножить на 2 13 Результат – вычисляемая величина Найти сумму положительных элементов в массиве 14 4. Поиск минимального элемента Для поиска минимального элемента необходимо назначить некоторый эталон – переменную, которой заранее присваивается значение, например первого элемента. Поиск проводится путем последовательного сравнения всех элементов с эталоном min. Параллельно можно запоминать номер минимального элемента min_N. 15 Шаблон блок-схемы a[i] < min - первый минимальный элемент a[i] ≤ min – последний минимальный элемент 16 5. Поиск максимального элемента Для поиска максимального элемента необходимо назначить некоторый эталон – переменную, которой заранее присваивается значение, например первого элемента. Поиск проводится путем последовательного сравнения всех элементов с эталоном max. Параллельно можно запоминать номер максимального элемента max_N. 17 Шаблон блок-схемы a[i] > max - первый максимальный элемент a[i] ≥ max – последний максимальный элемент 18 6. Нахождение первого элемента в массиве, удовлетворяющего заданному условию. Возможные ситуации: 1. Нужный элемент есть в массиве 2. Нужного элемента нет в массиве Введем обозначения: х – искомый элемент nom – номер искомого элемента 19 1 вариант решения Обработка массива ведется с помощью цикла с параметром. Просмотр массива начнем с конца, в этом случае последний найденный элемент, удовлетворяющий условию, окажется в начале массива. 20 Шаблон блок-схемы Начальное значение nom возьмем равным N+1, на случай если нужных элементов нет. Минус данного варианта: проверить нужно все элементы не зависимо от места расположения нужного. 21 2 вариант решения Обработка массива ведется с помощью цикла с предусловием. Просмотр массива начнем с начала, если найдем подходящий, то поиск прекратим. 22 Шаблон блок-схемы Возможны два случая: Подходящий элемент есть в массиве, тогда i равно номеру элемента. Подходящего элемента нет в массиве, тогда i равно N+1 и по этому значению работа цикла прекращается. 23 7. Нахождение последнего элемента в массиве, удовлетворяющего заданному условию. 1 вариант - с помощью цикла с параметром: Просмотр массива начнем с начала, в этом случае последний найденный элемент, удовлетворяющий условию, окажется в конце массива. 2 вариант - с помощью цикла с предусловием: Просмотр массива начнем с конца, если найдем подходящий, то поиск прекратим. 24 8. Перестановка элементов в массиве 1) Запоминаем в Х элемент стоящий на позиции i. 2) На его место ставим элемент с позиции j. 3) На место элемента с позиции j ставим Х. 25 X:=a[i]; A[i]:=A[j]; A[j]:=X; 9. Сортировка массива – простой выбор Идея: Выделяется наименьший (или наибольший) элемент массива и перемещается в начало массива. Далее опять выделяется наименьший (или наибольший) из оставшихся и перемещается на второе место. И т.д. пока не будут отобраны все элементы. Если ищем наименьший – то сортируем по возрастанию, наибольший – по убыванию. 26 Сортировка по возрастанию 27 10. Удаление одного элемента в массиве Необходимо удалить элемент с заданным номером nom. Тогда удаление осуществляется за счет последовательного сдвига всех элементов, начиная с позиции nom+1 на одну ячейку вправо. При выводе результата выводим только N-1 первых элементов, т.к. последнем месте осталось старое значение. 28 Удаление одного элемента 29 10. Удаление нескольких элементов в массиве Необходимо удалить элементы удовлетворяющие некоторому условию. Введем переменную k – количество удалений, данная переменная будет динамически изменять размерность массива. Для работы будем использовать цикл с предусловием. 30