Заполните массив случайными числами, отсортируйте его с помощью метода sort, выведите на экран. Спросите у пользователя число, которое он ищет в этом массиве. Используя метод двоичного поиска найдите этот элемент и выведите на экран его индекс.
from random import random
N = 20
array = []
# заполнение массива
for i in range(N):
array.append(int(random()*100))
# сортировка массива
array.sort()
print(array)
# число, которое требуется найти
number = int(input())
# нижний (начальный) индекс
low = 0
# верхний (конечный) индекс
high = N-1
# Как только нижний индекс станет
# больше на 1 верхнего или верхний
# на 1 меньше нижнего
# цикл остановится.
while low <= high:
# Находится индекс середины
# массива или отрезка массива.
mid = (low + high) // 2
# Если искомое число меньше
# числа с индексом середины,
if number < array[mid]:
# то верхняя граница сдвигается
# к середине (но на 1 до нее,
# т. к. середина была уже проверена)
high = mid - 1
# Если искомое число больше
# числа с индексом середины,
elif number > array[mid]:
# то нижняя граница сдвигается
# за середину
low = mid + 1
# Все остальные случаи возникают,
# когда искомое число равно числу
# с индексом mid,
# т.е. оно есть в массиве и найдено.
else:
print("ID =", mid)
# прерывание цикла
break
# Ветка else сработает,
# если не было break и
# условие при while стало ложным,
# т.е. тогда, когда нижняя граница
# станет больше верхней. Это значит,
# что в массиве нет искомого числа.
else:
print("No the number")
