Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.08 KB | None | 0 0
  1. import sys
  2. import time
  3. import random
  4. import matplotlib.pyplot as plt
  5.  
  6.  
  7. array = []
  8. n = input()
  9.  
  10. BestCase = []
  11. BestTime = [[], [], [], [], [], []]
  12.  
  13. WorstCase = []
  14. WorstTime = [[], [], [], [], [], []]
  15.  
  16. AveregeCase = []
  17. AverageTime = [[], [], [], [], [], []]
  18.  
  19.  
  20. def mergesort(array):
  21.     mergesortidx(array, 0, len(array)-1)
  22.  
  23. def insertionSort(array, mid):
  24.     for i in range(len(array)):
  25.         key = array[i]
  26.         j = i - 1
  27.         while j >= 0 and key < array[j]:
  28.             array[j+1] = array[j]
  29.             j -= 1
  30.         array[j+1] = key
  31.     return array
  32.  
  33. def mergesortidx(array, first, last):
  34.     if first < last:
  35.         mid = (first + last)//2
  36.         if mid <= array:
  37.             insertionSort(array, mid)
  38.         else:
  39.             mergesortidx(array, first, mid)
  40.             mergesortidx(array, mid+1, last)
  41.             merge(array, first, mid, last)
  42.  
  43. def merge(array, first, mid, last):
  44.     l = array[first:mid + 1]
  45.     r = array[mid+1:last + 1]
  46.     l.append(sys.maxsize)
  47.     r.append(sys.maxsize)
  48.     i = j = 0
  49.  
  50.     for k in range(first, last + 1):
  51.         if l[i] <= r[j]:
  52.             array[k] = l[i]
  53.             i += 1
  54.         else:
  55.             array[k] = r[j]
  56.             j += 1
  57.  
  58. def ComputationTime(array):
  59.     start = time.time()
  60.     mergesortidx(array, 0, len(array) - 1)
  61.     end = time.time()
  62.     return end - start
  63.  
  64.  
  65. fig, ax = plt.subplots(1)
  66. fig2, ax2 = plt.subplots(1)
  67. fig3, ax3 = plt.subplots(1)
  68.  
  69. for i in range(0, n):
  70.     BestCase.append(i)
  71.     BestTime[0].append(ComputationTime(BestCase))
  72.     BestTime[1].append(ComputationTime(BestCase))
  73.     BestTime[2].append(ComputationTime(BestCase))
  74.     BestTime[3].append(ComputationTime(BestCase))
  75.     BestTime[4].append(ComputationTime(BestCase))
  76.     BestTime[5].append(ComputationTime(BestCase))
  77.  
  78. for i in range(0, n):
  79.     WorstCase.append(n - (i + 1))
  80.     WorstTime[0].append(ComputationTime(WorstCase))
  81.     WorstTime[1].append(ComputationTime(WorstCase))
  82.     WorstTime[2].append(ComputationTime(WorstCase))
  83.     WorstTime[3].append(ComputationTime(WorstCase))
  84.     WorstTime[4].append(ComputationTime(WorstCase))
  85.     WorstTime[5].append(ComputationTime(WorstCase))
  86.  
  87. for i in range(0, n):
  88.     AveregeCase.append(random.randint(0,1000))
  89.     AverageTime[0].append(ComputationTime(AveregeCase))
  90.     AverageTime[1].append(ComputationTime(AveregeCase))
  91.     AverageTime[2].append(ComputationTime(AveregeCase))
  92.     AverageTime[3].append(ComputationTime(AveregeCase))
  93.     AverageTime[4].append(ComputationTime(AveregeCase))
  94.     AverageTime[5].append(ComputationTime(AveregeCase))
  95.  
  96. ax.set_title('BestCase Time')
  97. plt.xlabel('Sample n (n)')
  98. plt.ylabel('Computation time (sec)')
  99. ax.plot(range(0,n), BestTime[0], label = '' + str(int((n/10)*0)))
  100. ax.plot(range(0,n), BestTime[1], label = '' + str(int((n/10)*1)))
  101. ax.plot(range(0,n), BestTime[2], label = '' + str(int((n/10)*2)))
  102. ax.plot(range(0,n), BestTime[3], label = '' + str(int((n/10)*3)))
  103. ax.plot(range(0,n), BestTime[4], label = '' + str(int((n/10)*4)))
  104. ax.plot(range(0,n), BestTime[5], label = '' + str(int((n/10)*5)))
  105. fig.show()
  106.  
  107. ax2.set_title('WorstCase Time')
  108. ax2.plot(range(0,n), WorstTime[0], label = '' + str(int((n/10)*0)))
  109. ax2.plot(range(0,n), WorstTime[1], label = '' + str(int((n/10)*1)))
  110. ax2.plot(range(0,n), WorstTime[2], label = '' + str(int((n/10)*2)))
  111. ax2.plot(range(0,n), WorstTime[3], label = '' + str(int((n/10)*3)))
  112. ax2.plot(range(0,n), WorstTime[4], label = '' + str(int((n/10)*4)))
  113. ax2.plot(range(0,n), WorstTime[5], label = '' + str(int((n/10)*5)))
  114. fig2.show()
  115.  
  116. ax3.set_title('Average case')
  117. ax3.plot(range(0,n), AverageTime[0], label = '' + str(int((n/10)*0)))
  118. ax3.plot(range(0,n), AverageTime[1], label = '' + str(int((n/10)*1)))
  119. ax3.plot(range(0,n), AverageTime[2], label = '' + str(int((n/10)*2)))
  120. ax3.plot(range(0,n), AverageTime[3], label = '' + str(int((n/10)*3)))
  121. ax3.plot(range(0,n), AverageTime[4], label = '' + str(int((n/10)*4)))
  122. ax3.plot(range(0,n), AverageTime[5], label = '' + str(int((n/10)*5)))
  123. fig3.show()
  124.  
  125. fig.savefig("BestCase.png", bbox_inches='tight')
  126. fig3.savefig("AverageCase.png", bbox_inches='tight')
  127. fig2.savefig("WorstCase.png", bbox_inches='tight')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement