Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 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[0], time_quick[2], time_quick[4]), time_quick[1]) #допиши это говно
  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