Bubble Sort
The sorting algorithm works on the principle of moving the largest element to the end of the array just like a bubble moves up.
We do multiple pass over the array till its sorted, during each pass we compare the adjacent elements ( i.e i
and i+1
) and swap if the first is greater than the second. So at the end of the pass the largest element is at the top.
// we will need n passess
for ( int i = n-1 ; i >= 0; i-- ) {
for ( int j = 0; j+1 <= i; j++ ) {
// swap if the current element
// is larger than the next
if ( arr[j] < arr[j+1] ) {
swap(arr,i,j);
}
}
}
After each pass, the last part of the array will become sorted. That is why the last index of the range decreases by 1 after each pass.
This decrement is achieved by the outer loop and the last index is represented by variable i
in the above code.
The inner loop by j
helps to push the maximum element of range [0….i]
to the last index (i.e. i
)
If the array becomes sorted before all passes, to avoid unnecessary work we can have a small check to see if the array is already sorted
boolean isSorted = true;
// we will need n passess
for ( int i = n-1 ; i >= 0; i-- ) {
for ( int j = 0; j+1 <= i; j++ ) {
// swap if the current element
// is larger than the next
if ( arr[j] < arr[j+1] ) {
swap(arr,i,j);
isSorted = false;
}
}
// if no swap took place the array is sorted
// break to avoid unneeded iteration
if(isSorted) break;
}
If the array is already sorted no swap will occur and we will break out from the loops.
Last updated