Skip to content

Instantly share code, notes, and snippets.

@prat0318
Last active August 29, 2015 14:07
Show Gist options
  • Save prat0318/9b9fd7fce843ba260bcf to your computer and use it in GitHub Desktop.
Save prat0318/9b9fd7fce843ba260bcf to your computer and use it in GitHub Desktop.
cycle sort
def cycle_sort(arr):
writes = 0
for cycle_start in xrange(len(arr)):
item = arr[cycle_start]
print "Item picked :%s index: %s [A: %s]" % (item, cycle_start, arr)
pos = cycle_start
for i in xrange(cycle_start + 1, len(arr)):
if arr[i] < item:
pos += 1
print "Actual position: %s [A: %s]" % (pos, arr)
if pos == cycle_start:
continue
while item == arr[pos]:
pos += 1
arr[pos], item = item, arr[pos]
writes += 1
print "Swapped Item picked :%s index: %s [A: %s]" % (item, pos, arr)
while pos != cycle_start:
pos = cycle_start
for i in xrange(cycle_start + 1, len(arr)):
if(arr[i] < item):
pos += 1
print "New Actual position: %s [A: %s]" % (pos, arr)
while item == arr[pos]:
pos += 1
arr[pos], item = item, arr[pos]
print "New Swapped Item picked :%s index: %s [A: %s]" % (item, pos, arr)
writes += 1
return writes
@prat0318
Copy link
Author

a = [2,3,4,5,1] :

Item picked :2 index: 0 [A: [2, 3, 4, 5, 1]]
Actual position: 1 [A: [2, 3, 4, 5, 1]]
Swapped Item picked :3 index: 1 [A: [2, 2, 4, 5, 1]]
New Actual position: 1 [A: [2, 2, 4, 5, 1]]
New Actual position: 1 [A: [2, 2, 4, 5, 1]]
New Actual position: 1 [A: [2, 2, 4, 5, 1]]
New Actual position: 2 [A: [2, 2, 4, 5, 1]]
New Swapped Item picked :4 index: 2 [A: [2, 2, 3, 5, 1]]
New Actual position: 1 [A: [2, 2, 3, 5, 1]]
New Actual position: 2 [A: [2, 2, 3, 5, 1]]
New Actual position: 2 [A: [2, 2, 3, 5, 1]]
New Actual position: 3 [A: [2, 2, 3, 5, 1]]
New Swapped Item picked :5 index: 3 [A: [2, 2, 3, 4, 1]]
New Actual position: 1 [A: [2, 2, 3, 4, 1]]
New Actual position: 2 [A: [2, 2, 3, 4, 1]]
New Actual position: 3 [A: [2, 2, 3, 4, 1]]
New Actual position: 4 [A: [2, 2, 3, 4, 1]]
New Swapped Item picked :1 index: 4 [A: [2, 2, 3, 4, 5]]
New Actual position: 0 [A: [2, 2, 3, 4, 5]]
New Actual position: 0 [A: [2, 2, 3, 4, 5]]
New Actual position: 0 [A: [2, 2, 3, 4, 5]]
New Actual position: 0 [A: [2, 2, 3, 4, 5]]
New Swapped Item picked :2 index: 0 [A: [1, 2, 3, 4, 5]]
Item picked :2 index: 1 [A: [1, 2, 3, 4, 5]]
Actual position: 1 [A: [1, 2, 3, 4, 5]]
Item picked :3 index: 2 [A: [1, 2, 3, 4, 5]]
Actual position: 2 [A: [1, 2, 3, 4, 5]]
Item picked :4 index: 3 [A: [1, 2, 3, 4, 5]]
Actual position: 3 [A: [1, 2, 3, 4, 5]]
Item picked :5 index: 4 [A: [1, 2, 3, 4, 5]]
Actual position: 4 [A: [1, 2, 3, 4, 5]]

a=[4,3,2,1] :

Item picked :4 index: 0 [A: [4, 3, 2, 1]]
Actual position: 3 [A: [4, 3, 2, 1]]
Swapped Item picked :1 index: 3 [A: [4, 3, 2, 4]]
New Actual position: 0 [A: [4, 3, 2, 4]]
New Actual position: 0 [A: [4, 3, 2, 4]]
New Actual position: 0 [A: [4, 3, 2, 4]]
New Swapped Item picked :4 index: 0 [A: [1, 3, 2, 4]]
Item picked :3 index: 1 [A: [1, 3, 2, 4]]
Actual position: 2 [A: [1, 3, 2, 4]]
Swapped Item picked :2 index: 2 [A: [1, 3, 3, 4]]
New Actual position: 1 [A: [1, 3, 3, 4]]
New Actual position: 1 [A: [1, 3, 3, 4]]
New Swapped Item picked :3 index: 1 [A: [1, 2, 3, 4]]
Item picked :3 index: 2 [A: [1, 2, 3, 4]]
Actual position: 2 [A: [1, 2, 3, 4]]
Item picked :4 index: 3 [A: [1, 2, 3, 4]]
Actual position: 3 [A: [1, 2, 3, 4]]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment