Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. import os
  2. import random
  3. import sys
  4.  
  5.  
  6. def main(env, prog, argv):
  7. # Set the seed constant, we will have the same result every time
  8. random.seed(1)
  9. elements = generate_unsorted_elements(10)
  10. deep = 0
  11. print(elements)
  12. quicksort(deep, 0, len(elements) - 1, elements)
  13. print(elements)
  14.  
  15.  
  16. def quicksort(deep, left, right, elements):
  17. print(
  18. ' ' * deep * 4,
  19. 'quicksort({!r}, {!r}, {!r}, {!r})'.format(deep, left, right, elements[left:right+1])
  20. )
  21.  
  22. if left < right:
  23. p = partition(deep + 1, elements, left, right)
  24. quicksort(deep + 1, left, p - 1, elements)
  25. quicksort(deep + 1, p + 1, right, elements)
  26. print(
  27. ' ' * deep * 4,
  28. ' <- {!r}'.format(elements[left:right+1])
  29. )
  30.  
  31.  
  32. def partition(deep, elements, left, right):
  33. pivot = elements[right]
  34. i = left - 1
  35. for j in range(left, right):
  36. if elements[j] < pivot:
  37. i += 1
  38. swap(elements, i, j)
  39. if elements[right] < elements[i+1]:
  40. swap(elements, i + 1, right)
  41. return i + 1
  42.  
  43.  
  44. def swap(elements, index1, index2):
  45. tmp = elements[index1]
  46. elements[index1] = elements[index2]
  47. elements[index2] = tmp
  48.  
  49.  
  50. def generate_unsorted_elements(n=100):
  51. elements = list(range(n))
  52. random.shuffle(elements)
  53. return elements
  54.  
  55.  
  56. if __name__ == '__main__':
  57. main(os.environ, sys.argv[0], sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement