Java实现1到100得排序_几种常见的排序算法Java实现总结

本文通过Java代码详细展示了选择排序、插入排序、冒泡排序、希尔排序、shake排序、堆排序、快速排序(三种实现)以及合并排序和基数排序的实现过程,并通过实际运行时间展示了各排序算法的效率。
摘要由CSDN通过智能技术生成

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");

}/*-----------------------------------------冒泡排序法----------------------------------------

顾名思义,就是排序时,最大的元素会如同气泡一样移至右端,其利用比较相邻元素的方法,将大的元素交换至右端,

所以大的元素会不断的往右移动,直到适当的位置为止。

基本的气泡排序法可以利用旗标的方式稍微减少一些比较的时间,当寻访完阵列后都没有发生任何的交换动作,

表示排序已经完成,而无需再进行之后的回圈比较与交换动作。

----------------------------------------------------------------------------------------*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值