Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. import random, time
  2.  
  3. def main():
  4. global time_bubble, time_choice, time_quick
  5. time_bubble = []
  6. time_choice = []
  7. time_quick = []
  8. print("Вариант: ", 2025 % 4 + 1)
  9. N = int(input("Кол-во элементов: "))
  10.  
  11. random_array = []
  12. array_sort = [x for x in range(1, N)]
  13. array_reverse_sort = [x for x in range(N, 1, -1)]
  14.  
  15. for i in range(1, N):
  16. random_array.append(random.randint(1, 1000))
  17.  
  18. bubble_sort(array_sort)
  19. bubble_sort(random_array)
  20. bubble_sort(array_reverse_sort)
  21. choice_sort(array_sort)
  22. choice_sort(random_array)
  23. choice_sort(array_reverse_sort)
  24. time_for_quick(array_sort, random_array, array_reverse_sort)
  25.  
  26. print('{0:10} | {1:15} | {2:9} | {3:40}'.format("Метод", "отсортированная", "случайная", "отсортированная в обратном порядке"))
  27. print('{0:10} | {1:15f} | {2:9f} | {3:34f}'.format("Bubble", time_bubble[0], time_bubble[2], time_bubble[4]), time_bubble[1], time_bubble[3], time_bubble[5])
  28. print('{0:10} | {1:15f} | {2:9f} | {3:34f}'.format("Choice", time_choice[0], time_choice[2], time_choice[4]), time_choice[1], time_choice[3], time_choice[5])
  29. print('{0:10} | {1:15f} | {2:9f} | {3:34f}'.format("Quick", time_quick[1], time_quick[2], time_quick[3])) #допиши это говно
  30.  
  31.  
  32. def check(arr):
  33. n = len(arr) - 1
  34. for i in range(0, n):
  35. if arr[i] > arr[i+1]:
  36. return False
  37. return True
  38.  
  39.  
  40. def quick_sort(arr, start, end):
  41. l = start
  42. r = end
  43. t = (l + r) // 2
  44. while l != r:
  45. while l < t and arr[l] <= arr[t]:
  46. l += 1
  47. arr[l], arr[t] = arr[t], arr[l]
  48. t = l
  49. while r > t and arr[r] >= arr[t]:
  50. r -= 1
  51. arr[r], arr[t] = arr[t], arr[r]
  52. t = r
  53. if t - 1 > start:
  54. quick_sort(arr, start, t - 1)
  55. if t + 1 < end:
  56. quick_sort(arr, t + 1, end)
  57.  
  58.  
  59. def choice_sort(arr):
  60. n = len(arr)
  61. arr1 = arr.copy()
  62. i = 0
  63. time_start = time.time()
  64.  
  65. while i < n - 1:
  66. small = i
  67. j = i + 1
  68. while j < n:
  69. if arr1[j] < arr1[small]:
  70. small = j
  71. j += 1
  72. arr1[i], arr1[small] = arr1[small], arr1[i]
  73. i += 1
  74.  
  75. time_end = time.time()
  76. time_choice.append(time_end - time_start)
  77. time_choice.append(check(arr1))
  78.  
  79.  
  80. def bubble_sort(arr):
  81. arr1 = arr.copy()
  82. time_start = time.time()
  83. n = 1
  84. while n < len(arr1):
  85. for i in range(len(arr1) - n):
  86. if arr1[i] > arr1[i + 1]:
  87. arr1[i], arr1[i + 1] = arr1[i + 1], arr1[i]
  88. n += 1
  89. time_end = time.time()
  90. time_bubble.append(time_end - time_start)
  91. time_bubble.append(check(arr1))
  92.  
  93. def time_for_quick(a, b, c):
  94. time_start = time.time()
  95. quick_sort(a, 0, len(a) - 1)
  96. time_end = time.time()
  97. time_quick.append(time_end - time_start)
  98. time_quick.append(check(a))
  99. time_start = time.time()
  100. quick_sort(a, 0, len(b) - 1)
  101. time_end = time.time()
  102. time_quick.append(time_end - time_start)
  103. time_start = time.time()
  104. quick_sort(a, 0, len(c) - 1)
  105. time_end = time.time()
  106. time_quick.append(time_end - time_start)
  107.  
  108. if __name__ == '__main__':
  109. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement