public classMySort {final int MAX=20;int num[]=new int[MAX];
{
System.out.print("生成的随机数组是:");for(int i=0;i<20;i++){
num[i]=(int)(Math.random()*100);
System.out.print(num[i]+" ");
}
System.out.println();
}int num2[]=new int[MAX]; //只用于合并排序法中
{
System.out.print("合并排序法需要使用的数组2是:");for(int i=0;i<20;i++){
num2[i]=(int)(Math.random()*100);
System.out.print(num2[i]+" ");
}
System.out.println();
}int num3[]=new int[MAX+MAX]; //用于存放合并排序法中被合并排序好的数组
publicMySort(){
selsort(num.clone());//选择排序法
insort(num.clone()); //插入排序法
bubsort(num.clone()); //冒泡排序法
shellsort(num.clone()); //希尔排序法
shakersort(num.clone()); //shake排序法
heapsort(num.clone()); //堆排序
quicksort_one(num.clone()); //快速排序法(一)
quicksort_two(num.clone()); //快速排序法(二)
quicksort_three(num.clone()); //快速排序法(三)
mergesort(num.clone(),num2.clone(),num3); //合并排序法
basesort(num.clone()); //基数排序法
}/*----------------------------选择排序法-------------------------------------------
将要排序的对象分作两部份,一个是已排序的,一个是未排序的,从后端未排序部份选择一个最小值,并放入前端已排序部份的最后一个。
-------------------------------------------------------------------------------*/
public void selsort(intnumber[]) {inti, j, k, m, temp;longstart,end;
start=System.nanoTime();for(i = 0; i < MAX-1; i++) {
m=i;for(j = i+1; j < MAX; j++){if(number[j]
m=j;
}
}if( i !=m){
temp=number[i];
number[i]=number[m];
number[m]=temp;
}
}
end=System.nanoTime();
System.out.println("-----------------选择排序法------------------");
System.out.print("排序后是:");for(i=0;i<=MAX-1;i++){
System.out.print(number[i]+" ");
}
System.out.println();
System.out.println("排序使用时间:"+(end-start)+" ns");
}/*-------------------------插入排序法--------------------------------
像是玩朴克一样,我们将牌分作两堆,每次从后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的适当位置
-----------------------------------------------------------------*/
public void insort(intnumber[]){inti, j, k, temp;longstart,end;
start=System.nanoTime();for(j = 1; j < MAX; j++) {
temp=number[j];
i= j - 1;while(temp
number[i+1] =number[i];
i--;if(i == -1){break;
}
}
number[i+1] =temp;
}
end=System.nanoTime();
System.out.println("-----------------插入排序法------------------");
System.out.print("排序后是:");for(i=0;i<=MAX-1;i++){
System.out.print(number[i]+" ");
}
System.out.println();
System.out.println("排序使用时间:"+(end-start)+" ns");
}/*-----------------------------------------冒泡排序法----------------------------------------
顾名思义,就是排序时,最大的元素会如同气泡一样移至右端,其利用比较相邻元素的方法,将大的元素交换至右端,
所以大的元素会不断的往右移动,直到适当的位置为止。
基本的气泡排序法可以利用旗标的方式稍微减少一些比较的时间,当寻访完阵列后都没有发生任何的交换动作,
表示排序已经完成,而无需再进行之后的回圈比较与交换动作。
----------------------------------------------------------------------------------------*/