Advertisement
Lavig

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

Apr 9th, 2023
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.54 KB | None | 0 0
  1. import random
  2. def skip():
  3.     print ("_" * 60)
  4.     print ("_" * 60)
  5. def merge_sort(a):
  6.     n = len(a)
  7.     if n < 2:
  8.         return a
  9.     l = merge_sort(a[:n//2])
  10.     r = merge_sort(a[n//2:n])
  11.     i = j = 0
  12.     result = []
  13.     while i < len(l) or j < len(r):
  14.         if not i < len(l):
  15.             result.append(r[j])
  16.             j += 1
  17.         elif not j < len(r):
  18.             result.append(l[i])
  19.             i += 1
  20.         elif l[i] < r[j]:
  21.             result.append(l[i])
  22.             i += 1
  23.         else:
  24.             result.append(r[j])
  25.             j += 1
  26.     return result
  27. if __name__ == '__main__':
  28.     A = [random.randint(0, 10) for i in range(15)]
  29. def merge_sort_back(a):
  30.     n = len(a)
  31.     if n < 2:
  32.         return a
  33.     l = merge_sort_back(a[:n//2])
  34.     r = merge_sort_back(a[n//2:n])
  35.     i = j = 0
  36.     result = []
  37.     while i < len(l) or j < len(r):
  38.         if not i < len(l):
  39.             result.append(r[j])
  40.             j += 1
  41.         elif not j < len(r):
  42.             result.append(l[i])
  43.             i += 1
  44.         elif l[i] > r[j]:
  45.             result.append(l[i])
  46.             i += 1
  47.         else:
  48.             result.append(r[j])
  49.             j += 1
  50.     return result
  51. if __name__ == '__main__':
  52.     A = [random.randint(0, 10) for i in range(15)]
  53. skip()
  54. while True:
  55.     choice = input("""\033[52;1;118mВиберіть дію, яку потрібно виконати:
  56. \033[94m1 – Відсортувати заданий у функції масив\033[0m
  57. \033[35m2 – Відсортувати масив із прикладу у файлі\033[0m
  58. \033[33m3 – Ввести масив для сортування самостійно\033[0m
  59. """)
  60.     if choice == "1" or choice == "Відсортувати заданий у функції масив" or choice == "1 –  Відсортувати заданий у функції масив":
  61.         array = A[:]
  62.         break
  63.     elif choice == "2" or choice == "Відсортувати масив із прикладу у файлі" or choice == "2 – Відсортувати масив із прикладу у файлі":
  64.         array = [15, 4, 10, 8, 6, 9, 16, 1, 7 , 3, 11, 14, 2, 5, 12, 13]
  65.         break
  66.     elif choice == "3" or choice == "Ввести масив для сортування самостійно" or choice == "3 – Ввести масив для сортування самостійно":
  67.         while True:
  68.             array_input= input("\033[94mВведіть через пробіл числа масиву, які ви бажаєте відсортувати:\033[0m ")
  69.             array = array_input.split()
  70.             try:
  71.                 array = list(map(float, array))
  72.             except:
  73.                 print("\033[31mВведений масив складається не тільки з чисел. Спробуйте ввести інший масив!\033[0m")
  74.                 continue
  75.             for i in range(len(array)):
  76.                 if array[i].is_integer():
  77.                     array[i] = int(array[i])
  78.             break
  79.         break
  80.     else:
  81.         print("\033[31mВи ввели неправильне число. Спробуйте ще раз!\033[0m")
  82. print("\033[36mПочатковий масив:", array, '\033[0m')
  83. array = merge_sort(array)
  84. print("\033[38;5;208mМасив після сортування за зростанням:", array, '\033[0m')
  85. array = merge_sort_back(array)
  86. print("\033[38;5;219mМасив після сортування за спаданням:", array, '\033[0m')
  87. skip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement