import java.io.*;
import java.util.*;
public class Sorter {
private ArrayList[] buckets = new ArrayList[10];
private int[] nums;
private int arrayLength, numDigits;
private int currentDigit = 0;
public Sorter(int l, int d) {
arrayLength = l;
numDigits = d;
nums = new int[l];
for(int i=0; i<buckets.length; i++)
buckets[i] = new ArrayList<Integer>();
Random r = new Random();
int power = (int)(Math.pow(10,d));
for(int i=0; i<l; i++)
nums[i] = r.nextInt(power);
}
public void rsort(int[] a) {
while (currentDigit < numDigits) {
for(int i=0; i<a.length; i++) {
int sortDigit = (a[i]/(int)(Math.pow(10,currentDigit)))%10;
buckets[sortDigit].add(a[i]);
}
int index = 0;
for(int i=0; i<buckets.length; i++) {
for(int j=0; j<buckets[i].size(); j++) {
a[index] = (Integer)(buckets[i].get(j));
index++;
}
buckets[i].clear();
}
currentDigit++;
}
currentDigit = 0;
}
public void bsort(int[] a) {
int len=a.length,comparisons=0,swaps=0,localswaps=0;
while (len>0) {
for (int i=a.length-len;i<a.length-1;i++) {
if (a[i]>a[i+1]) {
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
swaps++;
localswaps++;
}
comparisons++;
if (localswaps==0)
len=0;
localswaps=0;
}
len--;
}
System.out.println("Bubble sort:");
System.out.println("Number of comparisons: "+comparisons);
System.out.println("Number of swaps: "+swaps);
System.out.println();
}
public void ssort(int[] a) {
int len = a.length,swaps=0,comparisons=0;
while (len>0) {
int firstindex=a.length-len;
int swapindex=a.length-1;
for(int i=firstindex;i<a.length;i++) {
if (a[i]<a[swapindex]) {
swapindex=i;
swaps++;
}
comparisons++;
}
int temp=a[firstindex];
a[firstindex]=a[swapindex];
a[swapindex]=temp;
len--;
}
System.out.println("Selection sort:");
System.out.println("Number of comparisons: "+comparisons);
System.out.println("Number of swaps: "+swaps);
System.out.println();
}
public void isort(int[] a) {
int swaps=0,comparisons=0;
for (int i=1; i<a.length; i++) {
int insertindex=i;
while(insertindex!=0&&a[insertindex-1]>a[insertindex]) {
int temp=a[insertindex];
a[insertindex]=a[insertindex-1];
a[insertindex-1]=temp;
comparisons++;
swaps++;
insertindex--;
}
}
System.out.println("Insertion sort:");
System.out.println("Number of comparisons: "+comparisons);
System.out.println("Number of swaps: "+swaps);
System.out.println();
}
public int[] getNums() {
return nums;
}
public String toString() {
return Arrays.toString(nums);
}
}