欢迎来到天天文库
浏览记录
ID:6782496
大小:58.50 KB
页数:9页
时间:2018-01-25
《java排序汇总36487》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、JAVA排序汇总收藏packagecom.wepull.jbs.lesson4;importjava.util.Random*排序测试类*排序算法的分类如下:*1.插入排序(直接插入排序、折半插入排序、希尔排序);*2.交换排序(冒泡泡排序、快速排序);**3.选择排序(直接选择排序、堆排序);**4.归并排序;*5.基数排序。*关于排序方法的选择:*(1)若n较小(如n≤50),可采用直接插入或直接选择排序。*当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。*(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排
2、序为宜;*(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。publicclassSortTest{*初始化测试数组的方法*@return一个初始化好的数组publicint[]createArray(){Randomrandom=newRandom();int[]array=newint[10];for(inti=0;i<10;i++)array[i]=random.nextInt(100)-random.nextInt(100);//生成两个随机数相减,保证生成的数中有负数}System.out.println("==========原始序列=
3、=========");printArray(array);returnarray;}*打印数组中的元素到控制台*@paramsource*/publicvoidprintArray(int[]data){for(inti:data){System.out.print(i+"");}System.out.println();}*交换数组中指定的两元素的位置*@paramdataramx*@paramyprivatevoidswap(int[]data,intx,inty){inttemp=data[x];data[x]=data[y];data[y]=temp;}*方法:相邻两元素进行比
4、较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。*性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4*@paramdata*要排序的数组*@paramsortType排序类型*@returnpublicvoidbubbleSort(int[]data,StringsortType){if(sortType.equals("asc")){//正排序,从小排到大//比较的轮数for(inti=1;i5、ta.length-i;j++){if(data[j]>data[j+1]){//交换相邻两个数swap(data,j,j+1);}}}}elseif(sortType.equals("desc")){//倒排序,从大排到小//比较的轮数for(inti=1;i6、ntArray(data);//输出冒泡排序后的数组值}*直接选择排序法----选择排序的一种*方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。*性能:比较次数O(n^2),n^2/2*交换次数O(n),n*交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。*但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。*@paramdata要排序的数组*@paramsortType排序类型*@returnpublicvoi7、dselectSort(int[]data,StringsortType){if(sortType.equals("asc")){//正排序,从小排到大intindex;for(inti=1;idata[index]){index=j;}}//交换在位置data.length-i和index(最
5、ta.length-i;j++){if(data[j]>data[j+1]){//交换相邻两个数swap(data,j,j+1);}}}}elseif(sortType.equals("desc")){//倒排序,从大排到小//比较的轮数for(inti=1;i6、ntArray(data);//输出冒泡排序后的数组值}*直接选择排序法----选择排序的一种*方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。*性能:比较次数O(n^2),n^2/2*交换次数O(n),n*交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。*但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。*@paramdata要排序的数组*@paramsortType排序类型*@returnpublicvoi7、dselectSort(int[]data,StringsortType){if(sortType.equals("asc")){//正排序,从小排到大intindex;for(inti=1;idata[index]){index=j;}}//交换在位置data.length-i和index(最
6、ntArray(data);//输出冒泡排序后的数组值}*直接选择排序法----选择排序的一种*方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。*性能:比较次数O(n^2),n^2/2*交换次数O(n),n*交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。*但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。*@paramdata要排序的数组*@paramsortType排序类型*@returnpublicvoi
7、dselectSort(int[]data,StringsortType){if(sortType.equals("asc")){//正排序,从小排到大intindex;for(inti=1;idata[index]){index=j;}}//交换在位置data.length-i和index(最
此文档下载收益归作者所有