void RadixSort(int array[]) {
		int digits, i, j, k, ind, max = 0;
		ArrayList<ArrayList<Integer>> buckets = new ArrayList<ArrayList<Integer>>();
		
		//find number of max digits
		for(i=0; i<array.length; i++) {
			digits = FindDigits(array[i]);
			max = max<digits? digits:max ;
		}
		digits = max;
		
		System.out.println("digits = "+digits);
		int div = 1;

		//initialize buckets
		for(i=0; i<10; i++) {
			ArrayList<Integer> bucket = new ArrayList<Integer>();
			buckets.add(bucket);
		}
		
		for(i=0; i<digits; i++) {
			//clear buckets for each pass 
			for(j=0; j<10; j++) {			
				buckets.get(j).clear();
			}

			//add elements to correct bucket
			for(j=0; j<array.length; j++) 
				buckets.get((array[j]/(div))%10).add(array[j]);
			
			//sort array
			ind = 0;
			for(j=0; j<buckets.size(); j++) {
				for(k=0; k<buckets.get(j).size(); k++)
					array[ind++] = buckets.get(j).get(k);
			}			
			div = div*10;
			DisplayArray(array);
		}
	}