مرتب‌ساز بایتونیک
کد نمونه

آنچه در ادامه می‌آید پیاده‌سازی الگوریتم مرتب‌سازی ادغامی بایتونیک در پایتون است. ورودی مقدار بولی up و لیست x طولی از توان ۲ دارد. خروجی لیستی مرتب‌شده‌است که اگر up برقرار باشد صعودی و در غیر این صورت نزولی است.
def bitonic_sort(up, x):
    if len(x) <= ۱:
      return x
    else:
      first = bitonic_sort(True, x[:len(x) / 2])
      second = bitonic_sort(False, x[len(x) / 2:])
      return bitonic_merge(up, first + second)
  def bitonic_merge(up, x):
    # assume input x is bitonic, and sorted list is returned
    if len(x) == ۱:
      return x
    else:
      bitonic_compare(up, x)
      first = bitonic_merge(up, x[:len(x) / 2])
      second = bitonic_merge(up, x[len(x) / 2:])
      return first + second
  def bitonic_compare(up, x):
    dist = len(x) / 2
    for i in range(dist):
      if (x[i]> x[i + dist]) == up:
        x[i], x[i + dist] = x[i + dist], x[i] #swap
>>> bitonic_sort(True, [10, 30, 11, 20, 4, 330, 21, 110])
[4, 10, 11, 20, 21, 30, 110, 330]
>>> bitonic_sort(False, [10, 30, 11, 20, 4, 330, 21, 110])
[330, 110, 30, 21, 20, 11, 10, 4]
در ادامه نیز پیاده‌سازی دیگری در جاوا آمده‌است.
public class BitonicSorter implements Sorter
{
    private int[] a;
    // sorting direction:
    private final static boolean ASCENDING=true, DESCENDING=false;

    public void sort(int[] a)
    {
        this.a=a;
        bitonicSort(0, a.length, ASCENDING);
    }

    private void bitonicSort(int lo, int n, boolean dir)
    {
        if (n>1)
        {
            int m=n/2;
            bitonicSort(lo, m, ASCENDING);
            bitonicSort(lo+m, m, DESCENDING);
            bitonicMerge(lo, n, dir);
        }
    }

    private void bitonicMerge(int lo, int n, boolean dir)
    {
        if (n>1)
        {
            int m=n/2;
            for (int i=lo; i<lo+m; i++)
                compare(i, i+m, dir);
            bitonicMerge(lo, m, dir);
            bitonicMerge(lo+m, m, dir);
        }
    }

    private void compare(int i, int j, boolean dir)
    {
        if (dir==(a[i]>a[j]))
            exchange(i, j);
    }

    private void exchange(int i, int j)
    {
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
    }

    public static void main(String[] args) {
      Sorter s = new BitonicSorter();
      s.sort(b);
    }

}    // end class BitonicSorter
برنامه زیر نیز پیاده‌سازی دیگری برای هر آرایه به طول دلخواه است.
public class BitonicSorterForArbitraryN implements Sorter
{
    private int[] a;
    private final static boolean ASCENDING=true;    // sorting direction

    public void sort(int[] a)
    {
        this.a=a;
        bitonicSort(0, a.length, ASCENDING);
    }

    private void bitonicSort(int lo, int n, boolean dir)
    {
        if (n>1)
        {
            int m=n/2;
            bitonicSort(lo, m, !dir);
            bitonicSort(lo+m, n-m, dir);
            bitonicMerge(lo, n, dir);
        }
    }

    private void bitonicMerge(int lo, int n, boolean dir)
    {
        if (n>1)
        {
            int m=greatestPowerOfTwoLessThan(n);
            for (int i=lo; i<lo+n-m; i++)
                compare(i, i+m, dir);
            bitonicMerge(lo, m, dir);
            bitonicMerge(lo+m, n-m, dir);
        }
    }

    private void compare(int i, int j, boolean dir)
    {
        if (dir==(a[i]>a[j]))
            exchange(i, j);
    }

    private void exchange(int i, int j)
    {
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
    }

    private int greatestPowerOfTwoLessThan(int n)
    {
        int k=1;
        while (k<n)
            k=k<<1;
        return k>>1;
    }

    public static void main(String[] args) {
      Sorter s = new BitonicSorterForArbitraryN();
      s.sort(b);
    }

}