Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
7.15. Проверка упорядоченности всех элементов массиваМассив называется упорядоченным (отсортированным) по возрастанию, если каждый элемент массива не меньше всех предшествующих элементов и не больше всех последующих элементов. Другим словами, для любых двух элементов массива, отсортированного по возрастанию, выполняется условие. Если i < j, то a(i) <= a(j), где i и j – номера элементов массива, a(i) и a(j) – элементы массива с соответствующими номерами. Массив называется упорядоченным (отсортированным) по убыванию, если каждый элемент массива не больше всех предшествующих элементов и не меньше всех последующих элементов. Другим словами, для любых двух элементов массива, отсортированного по убыванию, выполняется условие. Если i < j, то a(i) >= a(j), где i и j – номера элементов массива, a(i) и a(j) – элементы массива с соответствующими номерами. Для проверки упорядоченности массива необходимо последовательно сравнить все соседние элементы массива. Если в массиве найдется хотя бы одна пара элементов, для которой не выполняется условие упорядоченности, значит, массив не отсортирован. Рассмотрим особенности программной реализации данного алгоритма. Требуется проверить, упорядочены ли элементы целочисленного массива по возрастанию. Для решения задачи нам потребуется логическая переменная, в которой будет храниться результат программы. Dim test As Boolean До начала проверки предполагаем, что массив упорядочен. Следовательно, в результирующую переменную мы записываем значение Истина (True). test = True Организуем цикл для проверки всех элементов массива, от нулевого до предпоследнего. Так как на каждом шаге цикла мы будем сравнивать элементы с номерами i и (i+1), то завершить цикл надо, когда значение счетчика i станет равным n-1. В этом случае на последнем шаге цикла будут сравниваться элементы с номерами (n-1) и n. Если цикл после этого шага не прервать, то программа станет сравнивать элементы с номерами n и (n+1). Элемент с номером (n+1) в массиве отсутствует, поэтому произойдет аварийное завершении программы и ответ получен не будет. For i = 0 To n – 1 Анализируем соседние элементы. If a(i) > a(i + 1) Then Если элемент a(i) больше элемента a(i + 1), то есть предшествующий элемент больше, чем последующий, значит, массив не отсортирован по возрастанию. Записываем в результирующую переменную значение Ложь (False). test = False Теперь выполнение цикла можно прекратить, так как ответ уже получен. Exit For End If Next После завершения цикла выводим полученные результаты. Сначала печатаем горизонтальную черту, чтобы зрительно отделить исходные данные от результатов. lstA.Items.Add("-------------------------------") Затем анализируем полученный ответ. Обратите внимание на формулировку логического выражения в условном операторе. Она такая же, как в разделе 7.14. If test Then Если в переменной test записано значение Истина (True), значит, элементы массива упорядочены. Выводим соответствующее сообщение. lstA.Items.Add("Элементы массива упорядочены") Else В противном случае, если в переменной test хранится значение Ложь (False), значит, элементы массива неупорядочены. lstA.Items.Add("Элементы массива неупорядочены") End If Полный текст программы представлен в приложении 34. Примеры работы программы при различных исходных данных приведены на рис. 49. Рис. 49. Примеры работы программы, проверяющей, упорядочены ли элементы массива по возрастанию |