Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 lines
510 B

  1. def combsort(numbers_list):
  2. ordered = numbers_list.copy()
  3. gap = len(numbers_list) # initial gap (first and last element)
  4. swaps = True
  5. while swaps or gap!=1:
  6. swaps = False
  7. for i in range(len(numbers_list)-gap):
  8. if ordered[i] > ordered[i+gap]: # swaps without extra variable
  9. ordered[i] = ordered[i+gap] - ordered[i]
  10. ordered[i+gap] = ordered[i+gap] - ordered[i]
  11. ordered[i] = ordered[i+gap] + ordered[i]
  12. swaps = True
  13. gap = max(gap-1, 1) # update gap, minimum gap is 1
  14. return ordered