Advertisement
plarmi

Andrey2

Sep 23rd, 2023 (edited)
1,000
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. """
  2. "Есть четыре списка целых. Необходимо объединить
  3. в пятом списке только те элементы, которые уникальны
  4. для каждого списка. Полученный результат в зависимости
  5. от выбора пользователя отсортировать по убыванию или
  6. возрастанию. Найти значение, введенное пользователем,
  7. с использованием бинарного поиска."
  8. """
  9.  
  10. import random
  11.  
  12. array1 = list({random.randint(-50, 50) for i in range(10)})
  13. array2 = list({random.randint(-50, 50) for j in range(10)})
  14. array3 = list({random.randint(-50, 50) for m in range(10)})
  15. array4 = list({random.randint(-50, 50) for k in range(10)})
  16.  
  17. array5 = (array1 + array2 + array3 + array4)
  18.  
  19. # Бинарный поиск в списке по возрастанию
  20. def binary_search_asc(arr, target):
  21.     left, right = 0, len(arr) - 1
  22.  
  23.     while left <= right:
  24.         mid = left + (right - left) // 2
  25.         if arr[mid] == target:
  26.             print(f"Введённое значение {target} находится в списке под индексом {mid}")
  27.         elif arr[mid] < target:
  28.             left = mid + 1
  29.         else:
  30.             right = mid - 1
  31.  
  32.     print(f"Элемент {target} не найден!")
  33.  
  34. # Бинарный поиск в списке по убыванию
  35. def binary_search_desc(arr, target):
  36.     left, right = 0, len(arr) - 1
  37.  
  38.     while left <= right:
  39.         mid = left + (right - left) // 2
  40.         if arr[mid] == target:
  41.             print(f"Введённое значение {target} находится в списке под индексом {mid}")
  42.         elif arr[mid] > target:
  43.             left = mid + 1
  44.         else:
  45.             right = mid - 1
  46.  
  47.     print(f"Элемент {target} не найден!")
  48.  
  49. # print(array5)
  50.  
  51. while True:
  52.     try:
  53.         choice = input("Как отсортировать? (\"a\" - /по возрастанию, \"b\" - по убыванию): ")
  54.         if choice == "a":
  55.             array5.sort()
  56.             print(array5)
  57.             binary_search_asc(array5, int(input("Введите элемент для бинарного поиска: ")))
  58.             break
  59.         elif choice == "b":
  60.             array5.sort(reverse=True)
  61.             print(array5)
  62.             binary_search_desc(array5, int(input("Введите элемент для бинарного поиска: ")))
  63.             break
  64.         else:
  65.             raise ValueError
  66.     except ValueError:
  67.          print("Неправильный ввод!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement