Categories
Algorithm Algorithms & Design Sort

Pigeon Hole Sort


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 

Leave a comment

Design a site like this with WordPress.com
Get started