import java.util.Timer;
public class Sort
{
public static final int ARRAY_SIZE=100000;
public int[] arry=new int[ARRAY_SIZE];
public static void initize_array(int[]arry)
{
for(int i=0;i<arry.length;i++)
{
arry[i]=(int) (Math.random()*1000000%100000);
}
}
public static void selectionSort(int[] arry)
{
int smallest;
for(int i=0;i<arry.length;i++)
{
smallest=i;
for(int j=i+1;j<arry.length;j++)
{
if(arry[smallest]>arry[j])
{
smallest=j;
}
}
int temp=arry[smallest];
arry[smallest]=arry[i];
arry[i]=temp;
}
}
public static void deselectionSort(int[]arry)
{
int smallest,biggest;
int i=0,j=arry.length-1;
while(i<j)
{
smallest=i;
biggest=j;
for(int k=i;k<=j;k++)
{
if(arry[smallest]>arry[k])
{
smallest=k;
}
if(arry[biggest]<arry[k])
{
biggest=k;
}
}
int temp=arry[smallest];
arry[smallest]=arry[i];
arry[i]=temp;
temp=arry[biggest];
arry[biggest]=arry[j];
arry[j]=temp;
i++;
j--;
}
}
public static void bubbleSort(int[]arry)
{
for(int i=0;i<arry.length;i++)
{
for(int j=0;j<arry.length-i-1;j++)
{
if(arry[j]>arry[j+1])
{
int temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
}
public static int binary_search(int[]arry,int target)
{
int first=0;
int last=arry.length;
int mid=0;
while(first<last)
{
mid=(first+last)/2;
if(arry[mid]==target)
{
return mid;
}
else if(arry[mid]>target)
{
last=mid;
}
else if(arry[mid]<target)
{
first=mid+1;
}
}
return -1;
}
public static void insertSort(int[]arry)
{
for(int i=1;i<arry.length;i++)
{
int j=i;
int target=arry[i];
while(j>0&&target<arry[j-1])
{
arry[j]=arry[j-1];
j--;
}
arry[j]=target;
}
}
public static void mSort(int[]arr,int[]temp,int first,int last)
{
if(first+1<last)
{
int middle=(first+last)/2;
mSort(arr,temp,first,middle);
mSort(arr,temp,middle,last);
if(arr[middle-1]<arr[middle])
{
return;
}
int indexA=first;
int indexB=middle;
int indexC=first;
while(indexA<middle&&indexB<last)
{
if(arr[indexA]<arr[indexB])
{
temp[indexC]=arr[indexA];
indexA++;
}
else
{
temp[indexC]=arr[indexB];
indexB++;
}
indexC++;
}
while(indexA<middle)
{
temp[indexC]=arr[indexA];
indexA++;
indexC++;
}
while(indexB<last)
{
temp[indexC]=arr[indexB];
indexB++;
indexC++;
}
for(int i=first;i<last;i++)
{
arr[i]=temp[i];
}
}
}
public static void arry_print(int[]arry)
{
for(int i=0;i<arry.length;i++)
{
System.out.print(arry[i]);
}
System.out.print("\n");
}
public static void main(String[]args)
{
Sort sort=new Sort();
Sort.initize_array(sort.arry);
int[]temp=sort.arry.clone();
long startTime=System.currentTimeMillis();
//Sort.deselectionSort(sort.arry);
//Sort.selectionSort(sort.arry);
//Sort.bubbleSort(sort.arry);
//Sort.mSort(sort.arry, temp, 0, sort.arry.length);
Sort.insertSort(sort.arry);
long endTime=System.currentTimeMillis();
System.out.print((endTime-startTime)/1000);
}
}