Разработка алгоритма Python | Бинарный поиск

Заявление об авторском праве: оригинальность непростая задача, плагиат и перепечатка в этой статье запрещены, нарушение должно быть расследовано!

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. Информация об авторе

Автор: Рыбалка Сяохуна. Цель: Сделать программирование более интересным!

Сосредоточьтесь на алгоритмах, рептилиях, веб-сайтах, разработке игр, анализе данных, обработке естественного языка, искусственном интеллекте и т. Д., Ждем вашего внимания, давайте расти и кодировать вместе!

Примечание об авторских правах: в этой статье запрещен плагиат и перепечатка, нарушение должно быть расследовано!

рекомендация

отblog.csdn.net/qq_44000141/article/details/130092719