Bitonic Sort
Bitonic Sort
for sorting.
Bitonic sort does O(n Log 2n) comparisons.
The number of comparisons done by Bitonic sort are more than popular sorting algorithms like Merge
Sort [ does O(nLogn) comparisons], but Bitonice sort is better for parallel implementation because we
always compare elements in predefined sequence and the sequence of comparison doesnt depend on
data. Therefore it is suitable for implementation in hardware and parallel processor array.
To understand Bitonic Sort, we must first understand what is Bitonic Sequence and how to make a given
sequence Bitonic.
Bitonic Sequence
A sequence is called Bitonic if it is first increasing, then decreasing. In other words, an array arr[0..n-i] is
Bitonic if there exists an index i where 0<=i<=n-1 such that
Note: x0 and x1 are sorted in ascending order and x2 and x3 in descending order and so on
Step 2: Two 4 element bitonic sequences : A(3,7,8,4) and B(2,6,5,1) with comparator length as 2
After this step, well get Bitonic sequence of length 8.
3, 4, 7, 8, 6, 5, 2, 1
Bitonic Sorting
It mainly involves two steps.
1. Forming a bitonic sequence (discussed above in detail). After this step we reach the fourth stage in below
diagram, i.e., the array becomes {3, 4, 7, 8, 6, 5, 2, 1}
2. Creating one sorted sequence from bitonic sequence : After first step, first half is sorted in increasing
order and second half in decreasing order.
We compare first element of first half with first element of second half, then second element of first half
with second element of second and so on. We exchange elements if an element of first half is smaller.
After above compare and exchange steps, we get two bitonic sequences in array. See fifth stage in below
diagram. In the fifth stage, we have {3, 4, 2, 1, 6, 5, 7, 8}. If we take a closer look at the elements, we can
notice that there are two bitonic sequences of length n/2 such that all elements in first bitnic sequence {3,
4, 2, 1} are smaller than all elements of second bitonic sequence {6, 5, 7, 8}.
We repeat the same process within two bitonic sequences and we get four bitonic sequences of length
n/4 such that all elements of leftmost bitonic sequence are smaller and all elements of rightmost. See
sixth stage in below diagram, arrays is {2, 1, 3, 4, 6, 5, 7, 8}.
If we repeat this process one more time we get 8 bitonic sequences of size n/8 which is 1. Since all these
bitonic sequence are sorted and every bitonic sequence has one element, we get the sorted array.