Массивы.ppt
- Количество слайдов: 8
Массивы Массив — это переменная, в которой хранится сразу несколько значений. В то время как простая переменная имеет дело с одним значением конкретного типа данных, массив применяется в тех случаях, когда нужно использовать множество значений конкретного типа данных. Формальное определение – массив представляет собой совокупность однотипных индексированных переменных. В VBA допускается использовать до 60 индексов. О количестве индексов массива обычно говорят как о размерности массива: массивы с одним индексом называют одномерными или линейными, с двумя — двухмерными или плоскими, и так далее.
Синтаксис оператора объявления статического массива: Dim имя. Массива (размер1, размер2, …) As тип. Данных в скобках размер1, размер2 и так далее, задают размеры массива — количество индексов и максимально допустимое значение для каждого конкретного индекса. Индексирование элементов массива по умолчанию начинается с единицы. Так, объявление Dim Array 1 (10) As Integer определяет одномерный массив из 10 элементов, являющихся переменными целого типа, а объявление Dim Array 2 (5, 10) As Double определяет двумерный массив из пятидесяти (5*10) элементов, являющихся переменными универсального типа Double.
При объявлении массива можно и явно указать не только верхнюю границу индекса, но и его нижнюю границу, то есть явно задать диапазон изменения конкретного индекса массива, причем нижняя граница может быть любым целым числом, не обязательно положительным. Синтаксис такого определения: Dim имя. Массива (мин 1 To макс1, …) As тип. Данных Например, если вы собираетесь работать с массивом метеорологических данных, представляющих собой средние дневные температуры за последние две недели, то может оказаться весьма удобным дать следующее определение массива: Dim Temperature (-14 To 0) As Single Замечание В качестве стандартного значения нижней границы для допустимых значений индекса может использоваться не только единица. Можно изменить это стандартное значение с помощью оператора Option Base. Например, если поместить в начало вашего модуля оператор Option Base 0, то индексирование элементов по умолчанию будет начинаться с нуля, а не с единицы.
В VBA допускается использование и динамических массивов, размеры которых при описании не фиксируются. Определение размера динамического массива может быть сделано непосредственно во время выполнения программы. При определении динамического массива в операторе Dim после имени массива стоят лишь пустые скобки и описание типа переменных. Количество индексов и диапазон их изменения не задаются. Однако перед тем, как использовать массив, нужно выполнить оператор Re. Dim, который задаст размерность и диапазоны изменения индексов динамического массива. Синтаксис объявления и определения размеров динамического массива таков: Dim имя. Массива () As тип. Данных Re. Dim имя. Массива (размер1, размер2, …) Пример: Dim d. Array() As Variant Re. Dim d. Array(2) d. Array(1) = 1 d. Array(2) = 2 k = d. Array(1) + d. Array(2) Re. Dim d. Array(2, k) d. Array(1, 3) = "Строка"
Размеры массивов в процессе выполнения программы можно менять сколько угодно раз. В процессе выполнения оператора Re. Dim старые данные в массиве после изменения размера будут утеряны, чтобы сохранить старые данные используют ключевое слово Preserve. Re. Dim Preserve имя. Массива (размер1, размер2, …)
Сортировка пузырьком Сортировка простыми обменами, сортиро вка пузырько м (bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²). Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим «наибольшим элементом» , а наименьший элемент перемещается на одну позицию к началу массива ( «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма).
Блок-схема алгоритма сортировки пузырьком Возьмём массив с числами « 5 1 4 2 8» и отсортируем значения по возрастанию, используя сортировку пузырьком. Выделены те элементы, которые сравниваются на данном этапе. Первый проход: (5 1 4 2 8) (1 5 4 2 8), Здесь алгоритм сравнивает два первых элемента и меняет их местами. (1 5 4 2 8) (1 4 5 2 8), Меняет местами, так как 5 > 4 (1 4 5 2 8) (1 4 2 5 8), Меняет местами, так как 5 > 2 (1 4 2 5 8), Теперь, ввиду того, что элементы стоят на своих местах (8 > 5), алгоритм не меняет их местами. Второй проход: (1 4 2 5 8) (1 2 4 5 8), Меняет местами, так как 4 > 2 (1 2 4 5 8) Теперь массив полностью отсортирован, но алгоритм не знает так ли это. Поэтому ему необходимо сделать полный проход и определить, что перестановок элементов не было. Третий проход: (1 2 4 5 8) (1 2 4 5 8) Теперь массив отсортирован и алгоритм может быть завершён.
Sub Sort() Dim i As Long, tmp As Long, t As Boolean Dim M(0 To 30) As Long For i = 0 To UBound(M()) – 1 M(i)=100*RND Next i t = True Do While t t = False For i = 0 To UBound(Mus()) – 1 If M(i) > M(i + 1) Then tmp = M(i) = M(i + 1) = tmp t = True End If Next i Loop End Sub