import java.util.Vector;
public class PigeonHoleSort {
public static void main(String[] args) {
int arr[] = {1,12,9,14,16,80,33,3,4,7,60,2};
System.out.println("printing the array");
printArray(arr);
pigenHoleSort(arr,arr.length);
System.out.println("printint the sorted array");
printArray(arr);
}
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
public static void pigenHoleSort(int arr[], int size){
int min,max;
min = arr[0];
max = arr[0];
for(int i=0;i<size;i++){
if(arr[i]<min)
min=arr[i];
if(arr[i]>max)
max=arr[i];
}
int range = max-min+1;
Vector <Integer> holes [] = new Vector [range];
for(int i=0;i<range;i++)
holes[i] = new Vector();
for(int i=0;i<size;i++){
holes[arr[i]-min].add(arr[i]);
}
int index=0;
for(int i=0;i<range;i++){
for(int j=0;j<holes[i].size();j++){
arr[index]=holes[i].get(j);
index++;
}
}
}
}
Output :
printing the array 1 12 9 14 16 80 33 3 4 7 60 2 printint the sorted array 1 2 3 4 7 9 12 14 16 33 60 80