Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. import random, sys
  2.  
  3. def bubblesort(a):
  4. swaps = 0
  5. for x in range(1, len(a)):
  6. for i in range(0, len(a) - x):
  7. if(a[i] > a[i + 1]):
  8. swaps += 1
  9. buf = a[i]
  10. a[i] = a[i + 1]
  11. a[i + 1] = buf
  12. return swaps
  13.  
  14.  
  15. def merge(arr, left, right):
  16. i = 0
  17. j = 0
  18. ret = 0
  19. while( i < len(left) or j < len(right)):
  20. if(i == len(left)):
  21. arr[i + j] = right[j]
  22. j += 1
  23. elif j == len(right):
  24. arr[i + j] = left[i]
  25. i += 1
  26. elif left[i] <= right[j]:
  27. arr[i + j] = left[i]
  28. i += 1
  29. else:
  30. arr[i + j] = right[j]
  31. ret += len(left) - i
  32. j += 1
  33. return ret
  34.  
  35.  
  36. def invcount(arr):
  37. if(len(arr) < 2): return 0
  38. m = (len(arr) + 1) // 2
  39. left = list(arr[:m])
  40. right = list(arr[m:])
  41. return invcount(left) + invcount(right) + merge(arr, left, right)
  42.  
  43.  
  44. arr = list(range(1, 8))
  45. random.shuffle(arr)
  46. arr2 = list(arr)
  47. print(arr)
  48. print(invcount(arr))
  49. print("Done", arr)
  50.  
  51. print(arr2)
  52. print(bubblesort(arr2))
  53. print("Done", arr2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement