Guest User

Untitled

a guest
Jan 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.73 KB | None | 0 0
  1. import timeit
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4.  
  5. def insertion_sort(inputlist):
  6. j=1
  7. while j<len(inputlist):
  8. key = inputlist[j]
  9. i=j-1
  10. while i>=0 and key<inputlist[i]:
  11. inputlist[i+1]=inputlist[i]
  12. inputlist[i]=key
  13. i=i-1
  14. j=j+1
  15. return inputlist
  16.  
  17. #insertion sort - count for step.
  18. def insertion_sort_step(inputlist):
  19. step_insertion = 0
  20. j=1
  21. step_insertion += 1
  22. while j<len(inputlist):
  23. step_insertion += 1
  24. key = inputlist[j]
  25. step_insertion += 1
  26. i=j-1
  27. step_insertion += 1
  28. while i>=0 and key<inputlist[i]:
  29. step_insertion += 1
  30. inputlist[i+1]=inputlist[i]
  31. step_insertion += 1
  32. inputlist[i]=key
  33. step_insertion += 1
  34. i=i-1
  35. step_insertion += 1
  36. step_insertion += 1
  37. j=j+1
  38. step_insertion += 1
  39. step_insertion += 1
  40. return inputlist,step_insertion
  41.  
  42. def selection_sort(inputlist):
  43. for i in range(len(inputlist)-1):
  44. current_min=inputlist[i]
  45. min_index=i
  46. j=i+1
  47. while j<len(inputlist):
  48. if current_min > inputlist[j]:
  49. current_min = inputlist[j]
  50. min_index = j
  51. j=j+1
  52. inputlist[min_index]=inputlist[i]
  53. inputlist[i]=current_min
  54. return inputlist
  55.  
  56. def bubble_sort(inputlist):
  57. for i in range(len(inputlist)-1):
  58. j=0
  59. while j < len(inputlist)-1-i:
  60. larger = inputlist[j]
  61. if inputlist[j]>inputlist[j+1]:
  62. inputlist[j]=inputlist[j+1]
  63. inputlist[j+1]=larger
  64. j=j+1
  65. return inputlist
  66.  
  67.  
  68. #random tests
  69. test_list1=np.random.permutation(10)
  70. test_list2=np.random.permutation(100)
  71. test_list3=np.random.permutation(1000)
  72. test_worst=[10,9,8,7,6,5,4,3,2,1]
  73. test_best=[1,2,3,4,5,6,7,8,9,10]
  74. test_avg=[1,2,3,4,5,10,9,8,7,6]
  75.  
  76. print("insertion sort time No.1",timeit.timeit(stmt="insertion_sort(test_list1)",setup="from __main__ import insertion_sort,test_list1",number=100))
  77. print("insertion sort time No.2",timeit.timeit(stmt="insertion_sort(test_list2)",setup="from __main__ import insertion_sort,test_list2",number=100))
  78. print("insertion sort time No.3",timeit.timeit(stmt="insertion_sort(test_list3)",setup="from __main__ import insertion_sort,test_list3",number=100))
  79.  
  80. print("selection sort time No.1",timeit.timeit(stmt="selection_sort(test_list1)",setup="from __main__ import selection_sort,test_list1",number=1000))
  81. print("selection sort time No.2",timeit.timeit(stmt="selection_sort(test_list2)",setup="from __main__ import selection_sort,test_list2",number=1000))
  82. print("selection sort time No.3",timeit.timeit(stmt="selection_sort(test_list3)",setup="from __main__ import selection_sort,test_list3",number=1000))
  83.  
  84. print("bubble sort time No.1",timeit.timeit(stmt="bubble_sort(test_list1)",setup="from __main__ import bubble_sort,test_list1",number=1000))
  85. print("bubble sort time No.2",timeit.timeit(stmt="bubble_sort(test_list2)",setup="from __main__ import bubble_sort,test_list2",number=1000))
  86. print("bubble sort time No.3",timeit.timeit(stmt="bubble_sort(test_list3)",setup="from __main__ import bubble_sort,test_list3",number=1000))
  87.  
  88. time_insertion=[0.003,0.0396,1.1902]
  89. time_selection=[0.122,9.390,897.381]
  90. time_bubble=[0.179,17.784,1987.832]
  91. n=[10,100,1000]
  92.  
  93. time_insertion=np.array([time_insertion,n])
  94. time_selection=np.array([time_selection,n])
  95. time_bubble=np.array([time_bubble,n])
  96.  
  97. plt.figure()
  98. plt.scatter(y=time_insertion[0],x=time_insertion[1])
  99. plt.scatter(y=time_selection[0],x=time_selection[1])
  100. plt.scatter(y=time_bubble[0],x=time_bubble[1])
  101.  
  102. #Running time figure for insertion sort
  103. data_insertion=np.empty((1,2))
  104. for i in range(10,200,10):
  105. testlist=np.random.permutation(i)
  106. time=timeit.timeit(stmt="insertion_sort(testlist)",setup="from __main__ import insertion_sort,testlist",number=10)
  107. time=time/10
  108. stack=np.array((time,i))
  109. data_insertion=np.vstack((data_insertion,stack))
  110.  
  111. data_insertion=data_insertion[1:len(data_insertion)]
  112.  
  113. plt.figure()
  114. plt.ylim(0,0.0004)
  115. plt.scatter(x=data_insertion[:,1],y=data_insertion[:,0])
  116. plt.xlabel('Input size')
  117. plt.ylabel('Running time')
  118.  
  119. #Running time figure for bubble sort
  120. data_bubble=np.empty((1,2))
  121. for i in range(10,200,10):
  122. testlist=np.random.permutation(i)
  123. time=timeit.timeit(stmt="bubble_sort(testlist)",setup="from __main__ import bubble_sort,testlist",number=10)
  124. time=time/10
  125. stack=np.array((time,i))
  126. data_bubble=np.vstack((data_bubble,stack))
  127.  
  128. data_bubble=data_bubble[1:len(data_bubble)]
  129.  
  130. plt.figure()
  131. plt.ylim(0,0.008)
  132. plt.scatter(x=data_bubble[:,1],y=data_bubble[:,0])
  133. plt.xlabel('Input size')
  134. plt.ylabel('Running time')
Add Comment
Please, Sign In to add comment