Advertisement
Guest User

Untitled

a guest
Nov 12th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. def get_max_not_at_idx(a, idx, n):
  2. max_idx = 0
  3.  
  4. for i in range(1, n+ 1):
  5. if(i == idx):
  6. pass
  7. elif (a[i] > a[max_idx]):
  8. max_idx = i
  9.  
  10. return max_idx
  11.  
  12. # generic swapper
  13. def swap(a, i, j):
  14. a[i], a[j] = a[j], a[i]
  15.  
  16. def select_rec(a, i):
  17.  
  18. if(i < 2):
  19. return
  20.  
  21. n = i
  22. m1 = get_max_not_at_idx(a, 0, n)
  23. m2 = get_max_not_at_idx(a, m1, n)
  24.  
  25.  
  26. if(m2 == i and m1 == i - 1):
  27. swap(a, m1, m2)
  28.  
  29. elif(i == m2):
  30. swap(a, m2, i-1)
  31. swap(a, m1, i)
  32.  
  33. else:
  34. swap(a, m1, i)
  35. swap(a, m2, i - 1)
  36.  
  37. select_rec(a, n - 2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement