All pastes #363966 Raw Edit

Something

public text v1 · immutable
#363966 ·published 2007-02-19 20:53 UTC
rendered paste body
import java.util.LinkedList;

public class BucketSort {
    public static void main(String[] args) {
	
	int[] numbers = {34,56,32,123,45,54,76,63,7,321,432,67,8,321,456,234,5,432,3,21,43,2};
	
	int[] output = bucketSort(numbers, 10);
	
	for(int i = 0; i < output.length; i++)
	    System.out.print(output[i] + " ");
    } 
    
    /**
     * Sort using a Bucket Sort Algorithm 
     */
    public static int[] bucketSort(int[] toSort, int N) {
	LinkedList[] buckets = new LinkedList[N];

	// Initialize the Empty buckets
	for(int i = 0; i < N; i++) {
	    buckets[i] = new LinkedList();
	}
	
	int len = toSort.length;
	int max = 0;
	for(int i = 0; i < len; i++) 
	    if(toSort[i] > max) 
		max = toSort[i];

	//if (max == 0) return null;
	System.out.println("Max " + max);
	int hashValue = max / N;
	
	System.out.println("Len " + len);
	System.out.println("Hash " + hashValue);
	
	for(int i = 0; i < len; i++) {
	    int key;
	    
	    if (hashValue == 0) { 
		key = 0;
	    } else {
		key = toSort[i] / hashValue;
	    }
	    //System.out.println("Len " + len + " I " + i + " Sort Num: " + toSort[i] + " key: " + key);
	    if (key >= N) key = N - 1;
	    buckets[key].add(new Integer(toSort[i]));
	    //buckets[0].add(new Integer(0));//toSort[0]));
	}
	
	int[] sortedArray = new int[len];
	int spot = 0;
	for(int i = 0; i < N; i++) {
	    //System.out.println("I: " + i + " buckets.length " + buckets.length);
	    Object[] tmpCurrentBucket = buckets[i].toArray();
	    int[] currentBucket = new int[tmpCurrentBucket.length];
	    for(int j = 0; j < currentBucket.length; j++){
		//System.out.println("J " + j);
		currentBucket[j] = ((Integer)tmpCurrentBucket[j]).intValue();
	    
		//if (N > 1) N = N / 2;
		if(currentBucket.length > 2) 
		    currentBucket = bucketSort(currentBucket, N);
		for(int k = 0; j < currentBucket.length; k++) {
		    sortedArray[spot++] = currentBucket[k];
		}
	    }
	}
	
	
	return sortedArray;
    }
}