Lect_04_2012.ppt
- Количество слайдов: 13
Массивы Объявление: Public|Static|Dim Имя. Массива([Число. Элем 1, Число. Элем 2, . . ]) [As type] Допускается описание до 60 размерностей. По умолчанию нижняя граница индексов массива равняется 0. Option Base [0|1] - Применяется на уровне модуля для задания нижней границы индексов массива, используемой по умолчанию. Примеры: Dim my. Array(50) - массив типа Variant из 51 эл-та (включая нулевой) Dim Matrix(3, 4) As Integer - двумерный массив типа Integer 4 x 5 эл. Dim My. Matrix(1 To 5, 4 To 9, 3 To 5) As Double трехмерный массив типа Double с явно заданными границами индексов.
Массивы Dim Имя. Массива() [As type] - объявление динамического массива Redim [Preserve] Имя. Массива(Число. Элементов) назначение действительного числа элементов. Употребляется только в процедуре. Примеры: Dim A() - динамический массив типа Variant. N=1000 : Redim B(N) Redim Preserve B(N+100) - изменение верхней границы массива с сохранением N эл-тов
Функция Ubound - Возвращает значение типа Long, содержащее максимальный доступный индекс указанной размерности массива. Синтаксис UBound(arrayname[, dimension]) arrayname dimension Функция Имя переменной массива, удовлетворяющее стандартным правилам именования переменных. Целое число, указывающее размерность, верхнюю границу которой возвращает функция. Для первой размерности используется значение 1, для второй 2 и т. д. Если аргумент dimension опущен, подразумевается значение 1. Lbound - Возвращает значение типа Long, содержащее минимальный доступный индекс указанной размерности массива. Действует аналогично функции Ubound Примеры: Dim A(1 To 100, 0 To 3, -3 To 4) Инструкция UBound(A, 1) UBound(A, 2) LBound(A, 3) Возвращаемое значение 100 3 -3
Сортировка Количество шагов для любого алгоритма сортировки, который использует сравнения, составляет не менее O(N∙log(N)), где N – число элементов. Сортировка выбором (selection sort) Ш производится поиск наименьшего элемента в списке, он меняется местами с элементом в начале списка; Ш находится наименьший элемент из оставшихся, и меняется местами со вторым элементом; Ш процесс продолжается до тех пор, пока все элементы не займут свое конечное положение. Количество шагов - порядка O(N 2)
Алгоритм сортировки выбором Массив Ai i 1, i 2 - нижняя и верхняя границы индексов массива для i=i 1 до i 2 -1 В качестве минимального элемента min. Val принимается очередной из ещё не отсортированных min. Val = Ai Imin = i для j=i+1 до i 2 да Aj< min. Val нет Поиск среди остальных элементов наименьшего и запоминание его индекса Imin min. Val = Aj Imin = j AImin = Ai Ai = min. Val Найденный min элемент меняется местами с очередным не отсортированным
Пузырьковая сортировка (bubble sort) Ш Список просматривается до тех пор, пока не найдутся два соседних элемента, расположенных не по порядку. Ш Тогда они меняются местами ( «легкий» элемент «всплывает» , подобно пузырьку газа, «тяжелый» - «тонет» ) и процедура продолжается дальше. Ш Алгоритм повторяет этот процесс до тех пор, пока все элементы не займут свои места. Количество шагов - порядка O(N 2) 1 2 3 N-1 N
Алгоритм пузырьковой сортировки Массив Ai i 1, i 2 - нижняя и верхняя границы индексов массива, min и max - нижняя и верхняя границы индексов ещё не отсортированных элементов min = i 1 max = i 2 нет min < max да для i=min+1 до max да Ai< Ai-1 tmp = Ai-1 = Ai Ai = tmp max=max-1 Пока min < max проводить сравнение соседних элементов, перебирая все не отсортированные нет Элементы, расположенные не по порядку, меняется местами ( «тяжелый» элемент «тонет» ). tmp - временная переменная Верхняя границы индексов ещё не отсортированных элементов уменьшается на 1
Поиск Линейный поиск (linear search) или поиска методом полного перебора Поиск ведется с начала массива, и элементы перебираются последовательно, пока среди них не будет найден искомый. число Targ массив Ai Targ – значение, которое ищем По умолчанию - искомого элемента нет в массиве LS = 0 для i=i 1 до i 2 нет Ai= Targ LS = i LS Перебор всех элементов массива, пока не найдется нужный да Выводится индекс найденного элемента (или 0, если такого не нашлось)
Двоичный поиск (binary search) Применяется для сортированных массивов. Targ, массив Ai min = i 1 , max = i 2 , BS = 0 min max нет i 1, i 2 - нижняя и верхняя границы индексов массива, min и max - нижняя и верхняя границы индексов, в пределах которых ведется поиск. По умолчанию - искомого элемента нет в массиве Поиск выполняется, пока min < max да md=(min + max)/2 Amd= Targ да нет Targ > Amd max=md-1 да min=md+1 BS = md BS Элемент в середине массива сравнивается с искомым. Если искомый элемент равен «срединному» md, поиск завершается. Если искомый элемент меньше, чем «срединный» , то поиск продолжается в первой половине массива , если больше — во второй половине. Выводится индекс md найденного элемента (или 0, если такого не нашлось)
Элемент управления Text. Box - поле редактирования или элемент управления редактированием. Показывает данные, введенные пользователем во время разработки, или присвоенные элементу управления в виде кода во время выполнения. Свойство Text - свойство возвращает или устанавливает текст, содержащийся в области редактирования. txt. Var. Text = string txt. Var. Text (или txt. Var= string) my. Var = Свойство Multi. Line - указывает, может ли элемент управления Text. Box принимать и отображать несколько строк текста. Принимает значения True | False Text. Box может содержать до 2048 символов, если Multi. Line = False, до 32 Кбайт если Multi. Line = True Свойство Scroll. Bars - указывает, есть ли у объекта Text. Box горизонтальная или вертикальная линейка прокрутки. Принимает значения vb. SBNone | vb. Horizontal | vb. Vertical | vb. Both
Элемент управления List. Box (окно со списком) - показывает список пунктов, из которого пользователь может выбрать один или несколько пунктов. Если число пунктов больше, чем можно показать в окне, то к окну List. Box автоматически добавляется полоса прокрутки. Метод Add. Item Добавляет элемент в список. Синтаксис: object. Add. Item item [, index] Метод Remove. Item Удаляет запись из списка Синтаксис: object. Remove. Item index Метод Clear Синтаксис: Очищает содержимое List. Box object. Clear object Обязательный параметр. Имя объекта item Обязательный параметр. Строковое выражение, задающее элемент, который будет добавлен к объекту. index Целое число, которое указывает позицию в объекте, куда помещается новый элемент или строка. Первому элементу соответствует параметр index равный 0. Если параметр пропущен, то новый элемент помещается в конец.
Элемент управления List. Box (продолжение) List свойство Синтаксис: возвращает или устанавливает пункты списка object. List(index) = string my. Var = object. List(index) List. Count свойство возвращает количество элементов списка. Синтаксис n = object. List. Count List. Index свойство возвращает или устанавливает индекс текущего выделенного пункта Синтаксис object. List. Index[=index] - устанавливает индекс my. Ind = object. List. Index - возвращает индекс Если не выбран ни один пункт, то значение свойства List. Index равно -1. Text свойство возвращает выделенный в окне списка пункт Синтаксис: my. Choice = object. Text (или my. Choice = object) Это эквивалентно my. Choice = object. List(object. List. Index)
Задание 1) Генерировать целочисленный массив из 100 элементов с помощью генератора случайных чисел. 2) Написать программу сортировки числового массива двумя способами: выбором и пузырьковым методами. Отображать исходный массив с помощью элемента управления Text. Box, а отсортированный с помощью элемента управления List. Box. 3) Написать программу, выполняющую поиск заданного числа в массиве двумя способами: линейным и двоичным методами.
Lect_04_2012.ppt