MCPcopy Create free account
hub / github.com/TheAlgorithms/Python / cycle_sort

Function cycle_sort

sorts/cycle_sort.py:7–48  ·  view source on GitHub ↗

>>> cycle_sort([4, 3, 2, 1]) [1, 2, 3, 4] >>> cycle_sort([-4, 20, 0, -50, 100, -1]) [-50, -4, -1, 0, 20, 100] >>> cycle_sort([-.1, -.2, 1.3, -.8]) [-0.8, -0.2, -0.1, 1.3] >>> cycle_sort([]) []

(array: list)

Source from the content-addressed store, hash-verified

5
6
7def cycle_sort(array: list) -> list:
8 """
9 >>> cycle_sort([4, 3, 2, 1])
10 [1, 2, 3, 4]
11
12 >>> cycle_sort([-4, 20, 0, -50, 100, -1])
13 [-50, -4, -1, 0, 20, 100]
14
15 >>> cycle_sort([-.1, -.2, 1.3, -.8])
16 [-0.8, -0.2, -0.1, 1.3]
17
18 >>> cycle_sort([])
19 []
20 """
21 array_len = len(array)
22 for cycle_start in range(array_len - 1):
23 item = array[cycle_start]
24
25 pos = cycle_start
26 for i in range(cycle_start + 1, array_len):
27 if array[i] < item:
28 pos += 1
29
30 if pos == cycle_start:
31 continue
32
33 while item == array[pos]:
34 pos += 1
35
36 array[pos], item = item, array[pos]
37 while pos != cycle_start:
38 pos = cycle_start
39 for i in range(cycle_start + 1, array_len):
40 if array[i] < item:
41 pos += 1
42
43 while item == array[pos]:
44 pos += 1
45
46 array[pos], item = item, array[pos]
47
48 return array
49
50
51if __name__ == "__main__":

Callers 1

cycle_sort.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected