Массивы

Download Report

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