w3resource

Python: Sort an odd–even sort or odd–even transposition sort


35. Odd-Even Sort

Write a Python program to sort an odd–even sort or odd–even transposition sort.

From Wikipedia:
In computing, an odd–even sort or odd–even transposition sort (also known as brick sort self-published source] or parity sort) is a relatively simple sorting algorithm, developed originally for use on parallel processors with local interconnections. It is a comparison sort related to bubble sort, with which it shares many characteristics. It functions by comparing all odd/even indexed pairs of adjacent elements in the list and, if a pair is in the wrong order (the first is larger than the second) the elements are switched. The next step repeats this for even/odd indexed pairs (of adjacent elements). Then it alternates between odd/even and even/odd steps until the list is sorted.

Sample Solution:

Python Code:

def odd_even_transposition(arr: list) -> list:
    arr_size = len(arr)
    for _ in range(arr_size):
        for i in range(_ % 2, arr_size - 1, 2):
            if arr[i + 1] < arr[i]:
                arr[i], arr[i + 1] = arr[i + 1], arr[i]

    return arr
            
nums = [4, 3, 5, 1, 2]
print("\nOriginal list:")
print(nums)
odd_even_transposition(nums)
print("Sorted order is:", nums)
nums = [5, 9, 10, 3, -4, 5, 178, 92, 46, -18, 0, 7]
print("\nOriginal list:")
print(nums)
odd_even_transposition(nums)
print("Sorted order is:", nums)

Sample Output:

Original list:
[4, 3, 5, 1, 2]
Sorted order is: [1, 2, 3, 4, 5]

Original list:
[5, 9, 10, 3, -4, 5, 178, 92, 46, -18, 0, 7]
Sorted order is: [-18, -4, 0, 3, 5, 5, 7, 9, 10, 46, 92, 178]

Flowchart:

Flowchart: Python Data Structures and Algorithms: Sort an odd–even sort or odd–even transposition sort.

For more Practice: Solve these Related Problems:

  • Write a Python program to implement odd-even transposition sort on a list and verify that the list satisfies the wiggle property.
  • Write a Python script to perform odd-even sort on a list of integers and then count the number of iterations required.
  • Write a Python program to implement odd-even sort and print the list after each odd and even phase separately.
  • Write a Python function to sort a list using odd-even transposition sort and compare the result with bubble sort on the same list.

Go to:


Previous: Write a Python program to sort unsorted numbers using Patience sorting.
Next: Write a Python program to sort unsorted numbers using non-parallelized implementation of odd-even transposition sort.

Python Code Editor:

Contribute your code and comments through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.