Advertisement
Lavig

Практична робота №14.1

Apr 8th, 2023
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. import random
  2. def skip():
  3.     print ("_" * 60)
  4.     print ("_" * 60)
  5. skip()
  6. def partition(mas, start, end):
  7.     pivot = mas[(start + end) // 2]
  8.     i = start
  9.     j = end
  10.     compare_number = 0
  11.     swap_number = 0
  12.     while i <= j:
  13.         while mas[i] < pivot:
  14.             compare_number += 1
  15.             i += 1
  16.         while mas[j] > pivot:
  17.             compare_number += 1
  18.             j -= 1
  19.         if i <= j:
  20.             swap_number += 1
  21.             temp = mas[i]
  22.             mas[i] = mas[j]
  23.             mas[j] = temp
  24.             i += 1
  25.             j -= 1
  26.     return i, compare_number, swap_number
  27. def qSort(mas, start, end):
  28.     if start < end:
  29.         temp, compare_number, swap_number = partition(mas, start, end)
  30.         left_compare_number, left_swap_number = qSort(mas, start, temp - 1)
  31.         right_compare_number, right_swap_number = qSort(mas, temp, end)
  32.         compare_number += left_compare_number + right_compare_number
  33.         swap_number += left_swap_number + right_swap_number
  34.     else:
  35.         compare_number = 0
  36.         swap_number = 0
  37.     return compare_number, swap_number
  38. array = []
  39. while True:
  40.     choice = input("""\033[52;1;118mВиберіть дію, яку потрібно виконати:\033[0m
  41. \033[95m1 – Сгенерувати кількість чисел масиву рандомно
  42. \033[36;5;208m2 – Ввести кількість чисел масиву самостійно\033[0m
  43. """)
  44.     if choice == "1" or choice == "Сгенерувати кількість чисел масиву рандомно" or choice == "1 – Сгенерувати кількість чисел масиву рандомно":
  45.         length = random.randint(1, 100)
  46.         break
  47.     elif choice == "2" or choice == "Ввести кількість чисел масиву самостійно" or choice == "2 – Ввести кількість чисел масиву самостійно":
  48.         while True:
  49.             length = input("\033[35mВведіть кількість чисел масиву (від 1 до 100): ")
  50.             try:
  51.                 length = float(length)
  52.                 assert 1 <= length <= 100 and length.is_integer()
  53.                 length = int(length)
  54.                 break
  55.             except:
  56.                 print("\033[31mВведене значення не є цілим числом від 1 до 100. Спробуйте ввести інше значення!\033[0m")
  57.         break
  58.     else:
  59.         print("\033[31mВи ввели неправильне число. Спробуйте ще раз!\033[0m")
  60.         continue
  61. for i in range(length):
  62.     random_number = random.randint(1, 50)
  63.     array.append(random_number)
  64. print("\033[33mПочатковий масив:", array, '\033[0m')
  65. print("\033[92;1mКількість елементів у масиві:", length, '\033[0m')
  66. qSort(array, 0, len(array)-1)
  67. compare_number, swap_number = qSort(array, 0, len(array)-1)
  68. print("\033[38;5;219mМасив після сортування:", array, '\033[0m')
  69. print("\033[32mКількість порівнянь, які потрібні для сортування даного масиву:", compare_number, '\033[0m')
  70. print("\033[36;5;118mКількість обмінів, які потрібні для сортування даного масиву:", swap_number, '\033[0m')
  71. skip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement