## \$show=/label

A quick practical working java program for Bitonic sort. Explained how Bitonic Sequence works with examples.

## 1. Overview

Bitonic Sort is a classic parallel sorting algorithm. This is called as Bitonic Mergesort. It is also used as a construction method for building a sorting network.

Basically, it is a procedure of Biotonic sequence using bitonic splits.

How to write optimized bubble sort in java?

In java many sorting techniques can be implemented. But we have to choose the better one. This is very rarely used in real applications.

The bitonic sequence is said that when there is an index i exists such that either monotonically increasing and monotonically decreasing from index i and vice versa.

```Eg. 7, 4, 2, 1, 9, 8, 7, 6, 5
```

In this example where values from index 0 to 3 values are in incremental order and from index 4 to 8 are in decreasing order. This is called monotonically decreasing or increasing. This is the type of sequence is said to be Biotonic Sequence Network.

Bitonic Splits is a procedure of splitting a bitonic sequence into a bitonic sequence of half length.

let us see the procedure to sort the given integer array using the Bitonic Sort technique.

This does take input an unsorted array and converts into a Biotonic Sequence. This conversion takes k(k-1)/2 steps.

## 2. Converting a random input into a Biotonic Sequence

We start by forming 4-element bitonic sequences from the consecutive 2-element sequence. Consider 4-element in sequence x0, x1, x2, x3. We sort x0 and x1 in ascending order and x2 and x3 in descending order. We then concatenate the two pairs to form a 4 element bitonic sequence.

Next, we take two 4 element bitonic sequences, sorting one in ascending order, the other in descending order (using the Bitonic Sort which we will discuss below), and so on, until we obtain the bitonic sequence.

## 3. Bitonic Sort Java Program

The following is the implementation of Bitonic Sort in java programming language.

```package com.java.w3schools.blog.sorting;

/* Java program for Bitonic Sort. Note that this program
works only when size of input is a power of 2. */
public class BitonicSort {
/*
* The parameter dir indicates the sorting direction, ASCENDING or DESCENDING;
* if (a[i] > a[j]) agrees with the direction, then a[i] and a[j] are
* interchanged.
*/
void compAndSwap(int a[], int i, int j, int dir) {
if ((a[i] > a[j] && dir == 1) || (a[i] < a[j] && dir == 0)) {
// Swapping elements
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}

/*
* It recursively sorts a bitonic sequence in ascending order, if dir = 1, and
* in descending order otherwise (means dir=0). The sequence to be sorted starts
* at index position low, the parameter cnt is the number of elements to be
* sorted.
*/
void bitonicMerge(int a[], int low, int cnt, int dir) {
if (cnt > 1) {
int k = cnt / 2;
for (int i = low; i < low + k; i++)
compAndSwap(a, i, i + k, dir);
bitonicMerge(a, low, k, dir);
bitonicMerge(a, low + k, k, dir);
}
}

/*
* This funcion first produces a bitonic sequence by recursively sorting its two
* halves in opposite sorting orders, and then calls bitonicMerge to make them
* in the same order
*/
void bitonicSort(int a[], int low, int cnt, int dir) {
if (cnt > 1) {
int k = cnt / 2;

// sort in ascending order since dir here is 1
bitonicSort(a, low, k, 1);

// sort in descending order since dir here is 0
bitonicSort(a, low + k, k, 0);

// Will merge wole sequence in ascending order
// since dir=1.
bitonicMerge(a, low, cnt, dir);
}
}

/*
* Caller of bitonicSort for sorting the entire array of length N in ASCENDING
* order
*/
void sort(int a[], int N, int up) {
bitonicSort(a, 0, N, up);
}

/* A utility function to print array of size n */
static void printArray(int arr[]) {
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}

// Driver method
public static void main(String args[]) {
int a[] = { 3, 7, 4, 8, 6, 2, 1, 5 };
int up = 1;
BitonicSort ob = new BitonicSort();
ob.sort(a, a.length, up);
System.out.println("\nSorted array");
printArray(a);
}
}
```

Output:

```Sorted array:
1 2 3 4 5 6 7 8
```

## 4. Conclusion

In this article, We've seen how to implement the Bitonic Sorting technique in the Java language.

For this, we must know what is Biotonic Sequence. We have discussed how to convert a random array into a Bitonic sequence.

Finally seen how to implement a java program with output.

As usual, the code shown here is over GitHub.

Reference

BLOGGER: 1
1. Great ! this is helpful

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java Program to Bitonic Sort
Java Program to Bitonic Sort
A quick practical working java program for Bitonic sort. Explained how Bitonic Sequence works with examples.