桶排序

import java.math.* ;
import java.util.* ;

/**
 * 
 */
public class Test extends Base{
	public static void main(String[] args) throws Exception{
		int[] arr = getRandomArr() ;
		println(arr); 
		println(arr.length) ; 
		int[] temp = new int[arr.length] ;
		bucketSort(arr , arr.length, 99 );
		println(arr);
		println();		
	}

	public static void bucketSort(int[] arr , int n , int maxValue){
		LinkedList<Integer>[] bucket = new LinkedList[n] ;
		int pos;
		for (int i = 0; i < n ; i++ ){
			pos = arr[i] * n / (maxValue + 1) ;
			
			if(bucket[pos] == null || bucket[pos].size() < 1){
				LinkedList<Integer> link = new LinkedList<Integer>() ;
				link.add(arr[i]) ;
				bucket[pos] = link ;
				continue;
			}
			LinkedList<Integer> link = bucket[pos] ;
			int size = link.size() ;
			for (int j = 0 ; j < size; j++){
				if(link.get(j) > arr[i]){
					link.add(j, arr[i]);
					break;
				}
			}
			if(size == link.size())
				link.add(arr[i]);			
		}
		println();
		int temp = 0 ;
		for (int k = 0 ; k < n ; k++){
			LinkedList<Integer> list = bucket[k] ;
			if (list != null && list.size() >0){
				for (int j = 0 ; j < list.size() ; j++){
					print(j + " :" + list.get(j) + " ") ;
					print("(" + temp + ")");
					arr[temp++] = list.get(j);
				}
				println();
			}
		}
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章