Java Program for Comb Sort
Last Updated :
14 Dec, 2022
Comb Sort is mainly an improvement over Bubble Sort. Bubble sort always compares adjacent values. So all inversions are removed one by one. Comb Sort improves on Bubble Sort by using gap of size more than 1. The gap starts with a large value and shrinks by a factor of 1.3 in every iteration until it reaches the value 1. Thus Comb Sort removes more than one inversion counts with one swap and performs better than Bubble Sort.
The shrink factor has been empirically found to be 1.3 (by testing Combsort on over 200, 000 random lists) [Source: Wiki]
Although, it works better than Bubble Sort on average, worst case remains O(n2).
Java
import java.io.*;
public class CombSort {
int getNextGap( int gap)
{
gap = (gap * 10 ) / 13 ;
if (gap < 1 )
return 1 ;
return gap;
}
void sort( int arr[])
{
int n = arr.length;
int gap = n;
boolean swapped = true ;
while (gap != 1 || swapped == true ) {
gap = getNextGap(gap);
swapped = false ;
for ( int i = 0 ; i < n - gap; i++) {
if (arr[i] > arr[i + gap]) {
int temp = arr[i];
arr[i] = arr[i + gap];
arr[i + gap] = temp;
swapped = true ;
}
}
}
}
public static void main(String args[])
{
CombSort ob = new CombSort();
int arr[] = { 8 , 4 , 1 , 56 , 3 , - 44 , 23 , - 6 , 28 , 0 };
ob.sort(arr);
System.out.println( "sorted array" );
for ( int i = 0 ; i < arr.length; ++i)
System.out.print(arr[i] + " " );
}
}
|
Output:
sorted array
-44 -6 0 1 3 4 8 23 28 56
Time Complexity: The worst-case complexity of this algorithm is O(n2).
Auxiliary Space: O(1).
Please refer complete article on Comb Sort for more details!
Share your thoughts in the comments
Please Login to comment...