Advertisement
MeShootIn

9 laba

Dec 16th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.73 KB | None | 0 0
  1. # ---------------------------------
  2. # МЕТОДЫ СОРТИРОВКИ
  3. # ВЫПОЛНИЛ: ДМИТРИЙ МИШУТИН, КЭ - 101
  4. # ---------------------------------
  5.  
  6. import random
  7. import time
  8. import copy
  9.  
  10.  
  11. def bubble_sort(arr):
  12.     n = len(arr)
  13.     for i in range(n - 1):
  14.         for j in range(n - 1):
  15.             if arr[j] > arr[j + 1]:
  16.                 arr[j], arr[j + 1] = arr[j + 1], arr[j]
  17.  
  18.  
  19. def quick_sort(arr, l, r):
  20.     i = l
  21.     j = r
  22.     x = arr[(l + r) // 2]
  23.     while i <= j:
  24.         while arr[i] < x:
  25.             i += 1
  26.         while x < arr[j]:
  27.             j -= 1
  28.         if i <= j:
  29.             arr[i], arr[j] = arr[j], arr[i]
  30.             i += 1
  31.             j -= 1
  32.     if l < j:
  33.         quick_sort(arr, l, j)
  34.     if i < r:
  35.         quick_sort(arr, i, r)
  36.  
  37.  
  38. def insertion_sort(arr):
  39.     for i in range(len(arr)):
  40.         compare = arr[i]
  41.         j = i
  42.         while arr[j - 1] > compare and j > 0:
  43.             arr[j] = arr[j - 1]
  44.             j = j - 1
  45.         arr[j] = compare
  46.  
  47.  
  48. print("Вариант", (24 + 5 + 1999) % 4 + 1)
  49. n = int(input("Введите n: "))
  50.  
  51. norm_bubble = [i for i in range(1, n + 1)]
  52. norm_quick = [i for i in range(1, n + 1)]
  53. norm_insert = [i for i in range(1, n + 1)]
  54.  
  55. rand_bubble = [random.randint(-100, 100) for i in range(n)]
  56. rand_quick = copy.deepcopy(rand_bubble)
  57. rand_insert = copy.deepcopy(rand_bubble)
  58.  
  59. rev_bubble = [i for i in range(n, 0, -1)]
  60. rev_quick = [i for i in range(n, 0, -1)]
  61. rev_insert = [i for i in range(n, 0, -1)]
  62.  
  63. start = time.clock()
  64. bubble_sort(norm_bubble)
  65. time_bubble_norm = time.clock() - start
  66.  
  67. start = time.clock()
  68. bubble_sort(rand_bubble)
  69. time_bubble_rand = time.clock() - start
  70.  
  71. start = time.clock()
  72. bubble_sort(rev_bubble)
  73. time_bubble_rev = time.clock() - start
  74.  
  75. start = time.clock()
  76. quick_sort(norm_quick, 0, n - 1)
  77. time_quick_norm = time.clock() - start
  78.  
  79. start = time.clock()
  80. quick_sort(rand_quick, 0, n - 1)
  81. time_quick_rand = time.clock() - start
  82.  
  83. start = time.clock()
  84. quick_sort(rev_quick, 0, n - 1)
  85. time_quick_rev = time.clock() - start
  86.  
  87. start = time.clock()
  88. insertion_sort(norm_insert)
  89. time_insert_norm = time.clock() - start
  90.  
  91. start = time.clock()
  92. insertion_sort(rand_insert)
  93. time_insert_rand = time.clock() - start
  94.  
  95. start = time.clock()
  96. insertion_sort(rev_insert)
  97. time_insert_rev = time.clock() - start
  98.  
  99. print("Метод\tОтсортированная\t\tСлучайная\t\tВ обратном порядке")
  100. print("Пузырёк\t", time_bubble_norm, "\t", time_bubble_rand, "\t", time_bubble_rev, sep = "")
  101. print("Быстрая\t", time_quick_norm, "\t", time_quick_rand, "\t", time_quick_rev, sep = "")
  102. print("Вставки\t", time_insert_norm, "\t", time_insert_rand, "\t", time_insert_rev, sep = "")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement