Заявление об авторском праве: оригинальность непростая задача, плагиат и перепечатка в этой статье запрещены, нарушение должно быть расследовано!
Оглавление
1. Бинарный поиск
Двоичный поиск, также известный как бинарный поиск, представляет собой поисковый алгоритм для нахождения положения определенного элемента в упорядоченном массиве . Двоичный поиск требует, чтобы последовательность поиска хранилась в порядке и располагалась упорядоченно в соответствии с ключевыми словами.Говорят
, что двоичный поиск впервые появился в 1950-х годах, но первая правильная реализация появилась только в середине 1960-х годов. В 2006 году программу бинарного поиска в библиотеке Java все еще приходилось исправлять из-за ошибок. Трудно добиться идеального бинарного поиска, и необходимо полностью учитывать его условия выхода и вычисление промежуточной точки.
2. Идеи алгоритма
- Начните поиск со среднего элемента. Если именно элемент для поиска, поиск заканчивается
- Если нет, выполните бинарный поиск для половины элемента, который больше или меньше искомого элемента.
- Если массив для поиска после определенного шага пуст, это означает, что он не может быть найден, и может быть установлен в -1
Этот алгоритм уменьшает диапазон поиска вдвое для каждого сравнения, поэтому он очень эффективен.
3. Реализация алгоритма Python
def search(data, item):
left, right = 0, len(data) - 1
#数组升序
while left <= right:
middle = (left + right) // 2
if item < data[middle]:
right = middle - 1
elif item > data[middle]:
left = middle + 1
else:
return middle
#数组降序
# while left >= right:
# middle = (right + left) // 2
# if item > data[middle]:
# right = middle - 1
# elif item < data[middle]:
# left = middle + 1
# else:
# return middle
return -1
firstSearch = search([3, 5, 8, 10, 15], 0)
print(firstSearch)
secondSearch = search([3, 5, 8, 10, 15], 8)
print(secondSearch)
# secondSearch = search([15,10,8,5,3], 8)
# print(secondSearch)
Примечание : Тест здесь - порядок возрастания массива и несуществующая ситуация, при необходимости вы можете самостоятельно изменить соответствующую ситуацию
4. Информация об авторе
Автор: Рыбалка Сяохуна. Цель: Сделать программирование более интересным!
Сосредоточьтесь на алгоритмах, рептилиях, веб-сайтах, разработке игр, анализе данных, обработке естественного языка, искусственном интеллекте и т. Д., Ждем вашего внимания, давайте расти и кодировать вместе!
Примечание об авторских правах: в этой статье запрещен плагиат и перепечатка, нарушение должно быть расследовано!