Java Bubble Sort Implementation

Bubble sort is by using a flag in a while loop to determine if the given list is sorted or not. Each loop will bubble up the largest value(smallest value for descending order) of the remaining unsorted elements to the correct position. Bubble up means the swap of two values, when looping through each element in the list, if the value of the current position is larger than the value of the next position, swap them and set the swapped flag to true, so that the next outer while loop will loop through list again to do the next round of bubbling. Each inner loop will bubble up one value to the correct position, thus the number of inner loops will decrease by 1 in the next iteration.

Here is an example of bubble sort in Java

public class BubbleSort {
	 
	public static void bubbleSort(int[] num)
	{
		boolean swapped=true;
		int n=num.length;
		int temp=0;
		int count=0;//counter to counter the number of loops, for illustration purpose only not needed for the sorting itself.
		
		//the list is sorted if the last loop didn't do any swaps
		while(swapped)
		{
			swapped=false;
			
			//looping through the list and swap the current position and the next position as needed
			for(int i=0; i<n-1; i++)
			{
				//swap if the value of the current position is larger than the value of the next position
				//change > to < for descending order
				if(num[i]>num[i+1])
				{
					temp=num[i];
					num[i]=num[i+1];
					num[i+1]=temp;
					swapped=true;
				}
				
				//for illustration purpose only not needed for the sorting itself.
	            System.out.print(count+" During Sorting: ");
	            printArr(num);
				count++;
			}
			//After one whole iteration of the inner for loop, the last element should be in the correct position, thus we don't look at again in the next iteration.
			//Hence we decrease n by 1, so the number of inner for loop will decrease by 1 in the next iteration.
			n--;

		}
		System.out.println("count>>"+count);
	}

    public static void printArr(int[] arr)
    {
        for(int i=0; i<arr.length; i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
	
    public static void main(String args[])
    {
        int [] intArr={56,1,64,3,22};
        System.out.print("Before: ");
        printArr(intArr);
        bubbleSort(intArr);
        System.out.print("After: ");
        printArr(intArr);
    }
}

Output of the above bubble sort

Before: 56 1 64 3 22 
0 During Sorting: 1 56 64 3 22 
1 During Sorting: 1 56 64 3 22 
2 During Sorting: 1 56 3 64 22 
3 During Sorting: 1 56 3 22 64 
4 During Sorting: 1 56 3 22 64 
5 During Sorting: 1 3 56 22 64 
6 During Sorting: 1 3 22 56 64 
7 During Sorting: 1 3 22 56 64 
8 During Sorting: 1 3 22 56 64 
count>>9
After: 1 3 22 56 64 


See Insertion Sort, Merge Sort and other Sortings

Search within Codexpedia

Custom Search

Search the entire web

Custom Search