public class paixu {
/**
* @param args
*/
//冒泡法就是每循环一次,把最大的数字留在最下面。然后再从前n-1里面继续冒泡法。
public void maoPao(int[] number){
int in,out;
for(out=number.length-1;out>0;out--){
for(in=0;in<out;in++){
if(number[in]>number[in+1]){
int temp=number[in+1];
number[in+1]=number[in];
number[in]=temp;
}
}
}
}
public void chaRu(int[] number){
int in,out;
for(out=1;out<number.length;out++){
int temp=number[out];
in=out;
while(in>0&&number[in]>temp){
number[in]=number[in-1];
in--;
}
number[in]=temp;
}
}
//选择法就是,把前n个值一个一个的比较,把最小的值放在第一个位置,再从第二个位置比较后面的值,把最小的值放在第二个位置。以此类推,就实现的排序。
public void xuanZe(int[] number){
int in,out;
for(in=0;in<number.length-1;in++){
for(out=in+1;out<number.length;out++){
if(number[in]>number[out]){
int temp=number[out];
number[out]=number[in];
number[in]=temp;
}
}
}
}
public void display(int[] number){
for(int i=0;i<number.length;i++)
System.out.print(number[i]+" ");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
paixu p=new paixu();
int sz[]=new int[]{1,4,5,2,7,6,9,67,87,23,-3,-4,90};
System.out.print("原排序是:");
p.display(sz);
System.out.println("");
long begin=System.nanoTime();
p.maoPao(sz);
long end=System.nanoTime();
System.out.print("冒泡时间用时:"+(end-begin)+"纳秒");
p.display(sz);
System.out.println("");
begin=System.nanoTime();
p.chaRu(sz);
end=System.nanoTime();
System.out.print("插入时间用时:"+(end-begin)+"纳秒");
p.display(sz);
System.out.println("");
begin=System.nanoTime();
p.xuanZe(sz);
end=System.nanoTime();
System.out.print("选择时间用时:"+(end-begin)+"纳秒");
p.display(sz);
}
}
运行后的结果是
原排序是:1 4 5 2 7 6 9 67 87 23 -3 -4 90
冒泡时间用时:8940纳秒-4 -3 1 2 4 5 6 7 9 23 67 87 90
插入时间用时:6844纳秒-4 -3 1 2 4 5 6 7 9 23 67 87 90
选择时间用时:8590纳秒-4 -3 1 2 4 5 6 7 9 23 67 87 90
、
经过多次试验 插入排序是用时最少效率最快的
分享到:
评论