Заполнить массив случайными числами и отсортировать его. Ввести число x. Используя двоичный поиск, определить, сколько чисел, равных x, находится в массиве. ЯЗЫК PYTHON
Пример:
Массив: 1 4 7 3 9 2 4 5 2
После сортировки: 1 2 2 3 4 4 5 7 9
Введите число x:4
Число 4 встречается 2 раза
Ответы
Ответ:
from random import randint
# Создание списка,
# его сортировка по возрастанию
# и вывод на экран
a = []
for i in range(10):
a.append(randint(1, 50))
a.sort()
print(a)
# искомое число
value = int(input())
mid = len(a) // 2
low = 0
high = len(a) - 1
while a[mid] != value and low <= high:
if value > a[mid]:
low = mid + 1
else:
high = mid - 1
mid = (low + high) // 2
if low > high:
print("Такого значения нет")
else:
if (mid == 0 and a[1] != a[0]) or (mid == len(a) - 1 and a[mid - 1] != a[mid]):
print(1)
else:
q = 0
for i in range(mid, len(a)):
if a[i] == a[mid]:
q += 1
else:
break
for i in range(mid - 1, 0, -1):
if a[i] == a[mid]:
q += 1
else:
break
print(q)
Чтобы убрать вывод массива просто на 10-й строке убери print(a), а для вывода неотсортированного массива вставь после 8-й строки.