import java.util.*;
import java.io.*;
public class Bubble {
private ArrayList[] buckets;
public int[] ran;
private int compares,swaps = 0;
public void redixSort(){
for (int i=0;i<4;i++){
for (int p=0;p<ran.length;p++)
buckets[p]=new ArrayList();
for (int j=0;j<ran.length;j++){
int n = ran[j]/((int)(Math.pow(10,i)))%10;
buckets[n].add(ran[j]);
}
int x=0;
for (int k=0;k<ran.length;k++){
for (int m=0;m<buckets[k].size();m++){
ran[x] =(Integer)(buckets[k].get(m));
x++;
}
}
}
}
public void bSort(int[] toSort){
for(int i=0;i<toSort.length;i++){
for(int n=0;n<toSort.length-1;n++){
compares++;
if(toSort[n]>toSort[n+1]){
swaps++;
int tmp = toSort[n];
toSort[n] = toSort[n+1];
toSort[n+1]=tmp;
}
}
}
}
public void insertSort(int[] toSort){
int big = 0;
int bigIndex = 0;
for(int i=0;i<toSort.length;i++){
for(int n=0;n<toSort.length-i;n++){
big = toSort[0];
bigIndex = 0;
if (toSort[n]>big){
big = toSort[n];
bigIndex = n;
}
}
toSort[bigIndex] = toSort[(toSort.length-1)-i];
toSort[(toSort.length-1)-i] = big;
}
}
public void generate(int num){
buckets = new ArrayList[num];
ran = new int[num];
Random r = new Random();
for (int i=0;i<num;i++){
ran[i] = r.nextInt(9999);
}
}
public String toString(){
String r = "";
for (int i=0;i<ran.length;i++){
if (i!=ran.length-1)
r+=ran[i] + ", ";
else
r+=ran[i];
}
return r;
}
public static void main(String[] args){
Bubble b = new Bubble();
double startTime;
double endTime;
int num = Integer.parseInt(args[0]);
b.generate(num);
//System.out.println("toSort: "+ b);
startTime = System.currentTimeMillis();
b.bSort(b.ran);
endTime = System.currentTimeMillis() - startTime;
System.out.println(/*b + */"\n" + "Time Bubble: " + endTime);
System.out.println("\n---------------------\n");
startTime = System.currentTimeMillis();
b.insertSort(b.ran);
endTime = System.currentTimeMillis() - startTime;
System.out.println(/*b + */"\n" + "Time Insert: " + endTime);
}
}