import java.io.*;
import java.util.*;
public class Sorts {
private int numDig = 4;
private int numNum = 10;
private int[] values;
private ArrayList[] buckets = new ArrayList[10];
public int[] makeArray(int d, int s) {
int[] nums = new int[s];
int range = 1;
for (int j = 0; j<d; j++)
range = range * 10;
for (int i = 0; i<s; i++) {
Random temp = new Random();
nums[i] = (int)temp.nextInt(9000)+1000;
}
numDig = d;
numNum = s;
return nums;
}
public Sorts(){
values = new int [numNum];
for (int i=0; i<numNum; i++){
buckets[i] = new ArrayList();
}
for (int x = 0; x<numNum ;x++){
Random temp = new Random();
values[x]= (int)temp.nextInt(9000)+1000;
}
}
public Sorts(int dig,int nums){
numDig = dig;
numNum = nums;
buckets = new ArrayList[nums];
values = new int[nums];
for (int i=0; i<nums; i++){
buckets[i] = new ArrayList();
}
for (int x = 0; x<nums;x++){
Random temp = new Random();
values[x]= (int)temp.nextInt(9000)+1000;
}
}
public int[] radixSort( int[] l){
int[] temp = l;
for (int n = 0;n<numDig; n++){
for (int y=0; y<numNum;y++){
buckets[(int)(temp[y]/Math.pow(10,n)) %10].add(temp[y]);
}
int a = 0;
for (int z = 0; z <numNum; z ++){
for (int r = 0; r <buckets[z].size(); r ++){
temp[a]=(Integer)buckets[z].get(r);
a= a+1;
}
}
for (int b = 0; b < buckets.length; b ++){
buckets[b].clear();
}
}
return temp;
}
public int[] bSort( int[] a) {
int comps =0;
int swaps =0;
int[] temp = a;
boolean done = false;
for (int i = 0; i < temp.length && done != true; i ++){
done = true;
for (int j = 0; j < temp.length -1 -i; j ++){
comps ++;
if (temp[j] > temp[j+1]){
int bigger = temp[j];
temp [j] = temp [j+1];
temp [j+1] = bigger;
swaps++;
done = false;
}
}
}
System.out.println("Comparisons: " + comps);
System.out.println("Swaps: " + swaps);
return temp;
}
public int[] insertionSort(int[] array){
int swaps=0;
int comps = 0;
int[] a = array;
for (int i = 0; i<array.length; i ++){
for (int j = i; j>0; j--) {
if (a[j] < a[j-1]) {
int temp =a[j];
a[j] = a[j-1];
a[j-1] = temp;
swaps++;
}
comps++;
}
}
System.out.println("Comparisons: " + comps);
System.out.println("Swaps: " + swaps);
return a;
}
public int[] selectionSort(int[] array) {
int swaps= 0;
int comps = 0;
int[] a = array;
for (int i = 0; i<array.length; i++) {
int temp = a[i];
int min = i;
for (int j = i+1; j<a.length; j++) {
if (a[j] <= temp) {
temp = a[j];
min = j;
}
comps++;
}
a[min] = a[i];
a[i] = temp;
swaps++;
}
System.out.println("Comparisons: " + comps);
System.out.println("Swaps: " + swaps);
return a;
}
}