Skip to main content

Bubble Sort in JAVA

What is bubble sort?

It is a sorting technique that is based on the comparison.Here we compare adjacent element, if the first element is larger than the second we swap each other. We do the same procedure again and again until array do not sort completely.

Example:-
5 1 4 2 8



 5 1 4 2 8 

here pass is nothing but iterating the loops equal to number of elements in the array but if it already sorted before then we can break the loop anddo exist
PASS1
case0 1 //check 0 and first element
 1 5 4 2 8 
case1 2 //check 1 and 2 element
 1 4 5 2 8 
case2 3
 1 4 2 5 8 
case3 4
 1 4 2 5 8 
swap istrue
PASS2 //first pass completed now do second pass
case0 1
 1 4 2 5 8 
case1 2
 1 2 4 5 8 
case2 3
 1 2 4 5 8 
case3 4
 1 2 4 5 8 
swap istrue
PASS3 // third pass

case0 1
 1 2 4 5 8 
case1 2
 1 2 4 5 8 
case2 3
 1 2 4 5 8 
case3 4
 1 2 4 5 8 
swap isfalse

since swap is false we break from the loop and do not go for fourth and fifth pass

Program:-

package sorting;

public class BubbleSort {
 
 //function to print array
 public static void print(int[] arr)
 {
  for(int i=0;i<=arr.length-1;i++)
   System.out.print(" "+arr[i]);
  System.out.println(" ");
 }
 
 //function to swap elements
 public static int[] swap(int[] arr,int i, int j)
 {
  int temp;
  temp=arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
  
  return arr;
 }
 
public static void main(String[] args)
{
 int[] arr={5,1,4,2,8};
 print(arr);
 //declared to check the number of passes
 int pass=1;

 while(pass!=arr.length)
 {
  /*declared to check if there is no swap then we are 
  working on already sorted array and can break the loop */
 boolean swap=false;
 
 System.out.println("PASS"+pass);
 
 for(int i=0;i<arr.length-1;i++)
 { 
   if(arr[i]>arr[i+1])
   {
    arr=swap(arr,i,i+1);
    swap=true;
   }
   
   System.out.println("case"+i+" "+(i+1));
   
   print(arr);
  }


System.out.println("swap is"+swap);
if(swap==false)
{
 break;
}
pass++;
 }

}
 
}

Comments

.

Popular posts from this blog

How to design a Node in Tree?

How to design a Node in Tree?

There are three main components of a tree in a node.

 1) Integer holding data.
2) Left pointer holding node in a left subtree.
3) Right pointer holding node in a right subtree.

The following design is having data of int type and left,right pointers of a node to the subtrees.


package com.BST;publicclassNode{int data; Node left; Node right;/** * @return the data */publicNode(int data){this.left=null;this.right=null;this.data=data;}publicintgetData(){return data;}/** * @param data the data to set */publicvoidsetData(int data){this.data= data;}/** * @return the left */public Node getLeft(){return left;}/** * @param left the left to set */publicvoidsetLeft(Node left){this.left= left;}/** * @return the right */public Node getRight(){return right;}/** * @param right the right to set */publicvoidsetRight(Node right){this.right= right;}/* (non-Javadoc) * @see java.lang.Object#toString() */@Overridepublic String toString(){return"Node [data=&quo…

Heap implementation in JAVA

In this tutorial we will see all the functionalities of heaps implemented through java language.



package com.problems.heap;publicclassHeapFunctions{//Function to generate maxheapify where root is max than childspublicvoidmaxHeapify(int Arr[],int i,int N){int largest;int left =2*i+1;//left childint right =2*i +2;//right child System.out.println("left"+" "+left); System.out.println("right"+" "+right); System.out.println("Max size"+" "+N);if(left< N && Arr[left]> Arr[i]){ largest = left; System.out.println("largest left"+largest);}else{ largest = i; System.out.println("largest i"+largest);}if(right < N && Arr[right]> Arr[largest]){ largest = right; System.out.println("largest right"+largest);}if(largest != i ){ System.out.println("No largest"+largest); Arr=swap (A…