Предмет: Информатика, автор: impostor994

Заполнить массив случайными числами и отсортировать его. Ввести число 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 раза

Ответы

Автор ответа: robertkalentyev2
1

Ответ:

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-й строки.

Похожие вопросы
Предмет: Русский язык, автор: Кристина381
Предмет: Русский язык, автор: spike3