13.Методы поиска в массиве
Если у нас есть массив, содержащий упорядоченную последовательность данных, то очень эффективен двоичный поиск.
Переменные Lb и Ub содержат, соответственно, левую и правую границы отрезка массива, где находится нужный нам элемент. Мы начинаем всегда с исследования среднего элемента отрезка. Если искомое значение меньше среднего элемента, мы переходим к поиску в верхней половине отрезка, где все элементы меньше только что проверенного. Другими словами, значением Ub становится (M – 1) и на следующей итерации мы работаем с половиной массива. Таким образом, в результате каждой проверки мы вдвое сужаем область поиска. Так, в нашем примере, после первой итерации область поиска – всего лишь три элемента, после второй остается всего лишь один элемент. Таким образом, если длина массива равна 6, нам достаточно трех итераций, чтобы найти нужное число.
Двоичный поиск - очень мощный метод. Если, например, длина массива равна 1023, после первого сравнения область сужается до 511 элементов, а после второй - до 255. Легко посчитать, что для поиска в массиве из 1023 элементов достаточно 10 сравнений.
Кроме поиска бывает нужно вставлять и удалять элементы. К сожалению, массив плохо приспособлен для выполнения этих операций. О повышении эффективности операций вставки/удаления можно прочитать в разделе про структуры данных.
Частным случаем двоичного поиска является метод бисекции, который применяется для поиска корней заданной непрерывной функции на заданном отрезке.
Линейный, последовательный поиск — алгоритм нахождения заданного значения произвольной функции на некотором отрезке. Даный алгоритм является простейшим алгоритмом поиска и в отличие, например, от двоичного поиска, не накладывает никаких ограничений на функцию и имеет простейшую реализацию. Поиск значения функции осуществляется простым сравнением очередного рассматриваемого значения (как правило поиск происходит слева направо, то есть от меньших значений аргумента к большим) и, если значения совпадают (с той или иной точностью), то поиск считается завершённым.
- 1. Классификация элементов и узлов эвм
- 2.Арифметические основы эвм. Типы данных, представление, перевод чисел коды чисел -пряиой обратный дополнительный
- 5. Методы адресации, выполнение команд, прерывания, переместимость.
- 6.Микропроцессоры, микро и мини эвм, ес эвм, семейства эвм[1,2]..............
- 7. Персональные эвм,обзор основных типов,аппаратные елементы
- 8. Организация наборов данных- методы доступа в наборах, записи, блоки, форматы [5,16].....
- 9. Фунции и состав типичной операционной системы, режимы работы
- 10 Основные команды операционной системы
- 11.Классификация структур данных, задачи обработки, массивы,.Списки
- 12.Древовидные и табличные структуры.
- 13.Методы поиска в массиве
- 14. Методы внутренней сортировки
- 15.Внешняя сортировка наборов данных
- 16.Жизненный цикл программы, тз..
- 17.Методы проектирования программ
- 18.Методы тестирования и отладки программ
- 19.Понятие о технологии программирования.Качество по
- 20.Классификация и основы построения по
- 21.Банки данных, архитектура бд
- 22.Субд и их функции.
- 23.Реляционная алгебра и обработка данных
- 24.Пакеты прикладных программ
- 25.Информационно-поисковые системы.
- 26.Системы искусственного интеллекта.Диалог с пользователем
- 27.Программная документация.
- 28.Основные понятия сапр-функциональное и системное наполнение
- 29.Локальные сети, протоколы
- 30.Основные методы решения уравнений
- 30.Основные методы решения уравнений
- 31.Квадратурные формулы, решение задачи Коши
- 32.Структурное программирование