Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def skip():
- print ("_" * 60)
- print ("_" * 60)
- skip()
- def partition(mas, start, end):
- pivot = mas[(start + end) // 2]
- i = start
- j = end
- compare_number = 0
- swap_number = 0
- while i <= j:
- while mas[i] < pivot:
- compare_number += 1
- i += 1
- while mas[j] > pivot:
- compare_number += 1
- j -= 1
- if i <= j:
- swap_number += 1
- temp = mas[i]
- mas[i] = mas[j]
- mas[j] = temp
- i += 1
- j -= 1
- return i, compare_number, swap_number
- def qSort(mas, start, end):
- if start < end:
- temp, compare_number, swap_number = partition(mas, start, end)
- left_compare_number, left_swap_number = qSort(mas, start, temp - 1)
- right_compare_number, right_swap_number = qSort(mas, temp, end)
- compare_number += left_compare_number + right_compare_number
- swap_number += left_swap_number + right_swap_number
- else:
- compare_number = 0
- swap_number = 0
- return compare_number, swap_number
- array = []
- while True:
- choice = input("""\033[52;1;118mВиберіть дію, яку потрібно виконати:\033[0m
- \033[95m1 – Сгенерувати кількість чисел масиву рандомно
- \033[36;5;208m2 – Ввести кількість чисел масиву самостійно\033[0m
- """)
- if choice == "1" or choice == "Сгенерувати кількість чисел масиву рандомно" or choice == "1 – Сгенерувати кількість чисел масиву рандомно":
- length = random.randint(1, 100)
- break
- elif choice == "2" or choice == "Ввести кількість чисел масиву самостійно" or choice == "2 – Ввести кількість чисел масиву самостійно":
- while True:
- length = input("\033[35mВведіть кількість чисел масиву (від 1 до 100): ")
- try:
- length = float(length)
- assert 1 <= length <= 100 and length.is_integer()
- length = int(length)
- break
- except:
- print("\033[31mВведене значення не є цілим числом від 1 до 100. Спробуйте ввести інше значення!\033[0m")
- break
- else:
- print("\033[31mВи ввели неправильне число. Спробуйте ще раз!\033[0m")
- continue
- for i in range(length):
- random_number = random.randint(1, 50)
- array.append(random_number)
- print("\033[33mПочатковий масив:", array, '\033[0m')
- print("\033[92;1mКількість елементів у масиві:", length, '\033[0m')
- qSort(array, 0, len(array)-1)
- compare_number, swap_number = qSort(array, 0, len(array)-1)
- print("\033[38;5;219mМасив після сортування:", array, '\033[0m')
- print("\033[32mКількість порівнянь, які потрібні для сортування даного масиву:", compare_number, '\033[0m')
- print("\033[36;5;118mКількість обмінів, які потрібні для сортування даного масиву:", swap_number, '\033[0m')
- skip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement