import java.io.*;
import java.util.*;
public class RadixSort {
private int arraylength;
private int digits;
private int[] nums;
private ArrayList[] buckets;
private int[] temp;
public RadixSort(int a, int b){
arraylength = a;
digits = b;
nums = new int[arraylength];
for (int i = 0; i < arraylength; i++){
nums[i] = (int) (Math.random() * Math.pow(10,b));
}
}
public String toString (){
return (Arrays.toString(nums));
}
public void sort(){
for (int digit = 0; digit < digits; digit ++){
buckets = new ArrayList[10];
for (int i = 0; i < 10; i ++){
buckets[i] = new ArrayList();
}
for (int current = 0; current < arraylength; current ++){
int digitval = (int) (nums[current] / Math.pow(10, digit)) % 10;
buckets[digitval].add(nums[current]);
}
temp = new int[arraylength];
int place = 0;
for (int j = 0; j < 10; j++){
for (int aplace = 0; aplace < buckets[j].size(); aplace ++){
temp[place] = (Integer)buckets[j].get(aplace);
place = place + 1;
}
}
nums = temp;
}
}
public int[] bsort() {
int numSwaps=0;
int numComps=0;
int i;
for (int q=0; q<nums.length-1; q++) {
i=0;
for (int r=0; r<nums.length-1; r++) {
if (nums[r] > nums[r+1]){
i=1;
int a= nums[r+1];
nums[r+1] = nums[r];
nums[r]=a;
numSwaps= numSwaps+1;
}
numComps=numComps+1;
}
if (i==0) {
break;
}
numComps = numComps + 1;
}
System.out.println(numSwaps+ ":" + numComps);
return nums;
}
public int[] ssort() {
int min;
int mindex = 0;
int numComps= 0;
int numSwaps=0;
for (int p=0; p<nums.length-1; p++) {
min=nums[p];
for (int q= p+1; q<nums.length; q++) {
if (nums[q] < min) {
min = nums[q];
mindex= q;
}
numComps=numComps+1;
}
nums[mindex]=nums[p];
numSwaps=numSwaps+1;
nums[p]=min;
numSwaps=numSwaps+1;
}
System.out.println(numSwaps +":"+numComps);
return nums;
}
public int[] isort() {
int numSwaps = 0;
int numComps = 0;
for ( int i = 0 ; i < nums.length ; i++ ) {
//System.out.println(Arrays.toString(nums));
for (int j=i; j>0;j--){
numComps=numComps+1;
if (nums[j] <nums[j-1]) {
int temp =nums[j-1];
nums[j-1]=nums[j];
nums[j]=temp;
numSwaps=numSwaps+2;
//System.out.println(Arrays.toString(nums));
}
else {
break;
}
}
}
System.out.println(numSwaps +":"+numComps);
return nums;
}
}