1
1
"""
2
+ Source: https://en.wikipedia.org/wiki/Odd%E2%80%93even_sort
3
+
2
4
This is a non-parallelized implementation of odd-even transpostiion sort.
3
5
4
6
Normally the swaps in each set happen simultaneously, without that the algorithm
5
7
is no better than bubble sort.
6
8
"""
7
9
8
10
9
- def OddEvenTransposition (arr ) :
11
+ def odd_even_transposition (arr : list ) -> list :
10
12
"""
11
- >>> OddEvenTransposition ([5, 4, 3, 2, 1])
13
+ >>> odd_even_transposition ([5, 4, 3, 2, 1])
12
14
[1, 2, 3, 4, 5]
13
15
14
- >>> OddEvenTransposition ([13, 11, 18, 0, -1])
16
+ >>> odd_even_transposition ([13, 11, 18, 0, -1])
15
17
[-1, 0, 11, 13, 18]
16
18
17
- >>> OddEvenTransposition ([-.1, 1.1, .1, -2.9])
19
+ >>> odd_even_transposition ([-.1, 1.1, .1, -2.9])
18
20
[-2.9, -0.1, 0.1, 1.1]
19
21
"""
20
- for i in range (0 , len (arr )):
21
- for i in range (i % 2 , len (arr ) - 1 , 2 ):
22
+ arr_size = len (arr )
23
+ for _ in range (arr_size ):
24
+ for i in range (_ % 2 , arr_size - 1 , 2 ):
22
25
if arr [i + 1 ] < arr [i ]:
23
26
arr [i ], arr [i + 1 ] = arr [i + 1 ], arr [i ]
24
27
@@ -27,4 +30,4 @@ def OddEvenTransposition(arr):
27
30
28
31
if __name__ == "__main__" :
29
32
arr = list (range (10 , 0 , - 1 ))
30
- print (f"Original: { arr } . Sorted: { OddEvenTransposition (arr )} " )
33
+ print (f"Original: { arr } . Sorted: { odd_even_transposition (arr )} " )
0 commit comments