Odd-Even Sort

Odd-even sort is an $$O(n^2)$$ algorithm related to Bubble Sort. It is stable, but it is not adaptive.

=Explanation= Odd-even sort makes passes through the array, similarly to Bubble Sort, but instead, it compares and swaps odd indices, then compares and swaps even indices, and repeats until no swaps are made. For example:

3 4 5 1 2

Compare and swap odd indices:

Compare indices 0 and 1. They are in order, so leave them.

3 4 5 1 2

Compare indices 2 and 3. They are out of order, so swap them.

3 4 1 5 2

Compare and swap even indices:

Compare indices 1 and 2. They are out of order, so swap them.

3 1 4 5 2

Compare indices 3 and 4. They are out of order, so swap them.

3 1 4 2 5

Not sorted, so repeat.

Compare and swap odd indices:

Compare indices 0 and 1. They are out of order, so swap them.

1 3 4 2 5

Compare indices 2 and 3. They are out of order, so swap them.

1 3 2 4 5

Compare and swap even indices:

Compare indices 1 and 2. They are out of order, so swap them.

1 2 3 4 5

Compare indices 3 and 4. They are in order, so leave them.

1 2 3 4 5

Sorted!

=Pseudocode= procedure odd_even_sort(array arr) do bool sorted = false; while not sorted do sorted = true; for i = 0, i < length(arr), i += 2 do if arr[i] > arr[i + 1] do swap arr[i] and arr[i + 1] sorted = false; end if end for for i = 1, i < length(arr), i += 2 do if arr[i] > arr[i + 1] do swap arr[i] and arr[i + 1] sorted = false; end if end for end while end