Задать вопрос
@dyrtage6

Почему выходит значение None в бинарном поиске?

Пишу код алгоритма бинарного поиска с книги 'Грокаем алгоритмы'. Все работает, но меня смущает что выходит значение None при поиске значения в массиве. Хотя это число присутствует в массиве. Как это исправить?
Вот как выглядит код -
def binary_search(list, item):
	low = 0
	high = len(list) - 1

	while low <= high:
		mid = (low + high) // 2
		guess = list[mid]

		if guess == item:
			return mid
		elif guess > item:
			high = mid - 1
		else:
			low = mid + 1

	return None

my_list = [1, 8, 4, 25, 14, 9, 3, 10]
print(binary_search(my_list, 14))
print(binary_search(my_list, 2))
print(binary_search(my_list, 8))


Вот что выводит консоль(первое значение должно выдать индекс, но почему то выводит None) -
5f1b2f27a9b33949583352.png
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Бинарный поиск работает только по упорядоченному массиву.
Ответ написан
Комментировать
IDzone-x
@IDzone-x
Костыли сила паттерны могила
Сперва нужно розсортировать список (допустим функцией sort( )). А потом уже кормить ево алгоритму.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы