欢迎来到天天文库
浏览记录
ID:26881019
大小:66.00 KB
页数:25页
时间:2018-11-29
《排序算法汇总25592》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、排序算法汇总importjava.util.Random; /** *排序测试类 * *排序算法的分类如下: *1.插入排序(直接插入排序、折半插入排序、希尔排序); *2.交换排序(冒泡泡排序、快速排序); *3.选择排序(直接选择排序、堆排序); *4.归并排序; *5.基数排序。 * *关于排序方法的选择: *(1)若n较小(如n≤50),可采用直接插入或直接选择排序。 * 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。 *(2)若文件初始状态基本有序(指正序),则应选用直接插人
2、、冒泡或随机的快速排序为宜; *(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 * */publicclassSortTest{ publicint[]createArray(){ Randomrandom=newRandom(); int[]array=newint[10]; for(inti=0;i<10;i++){ array[i]=random.nextInt(100)
3、-random.nextInt(100);//生成两个随机数相减,保证生成的数中有负数 } System.out.println("==========原始序列=========="); printArray(array); returnarray; } publicvoidprintArray(int[]data){ for(inti:data){ System
4、.out.print(i+""); } System.out.println(); } privatevoidswap(int[]data,intx,inty){ inttemp=data[x]; data[x]=data[y]; data[y]=temp; } /** *冒泡排序----交换排序的一种 *方法:相邻两元素进行比较,如有需要则进行交换,每完
5、成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。 *性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4 * *@paramdata要排序的数组 *@paramsortType排序类型 *@return */ publicvoidbubbleSort(int[]data,StringsortType){ if(sortType.equals("asc")){//正排序,从小排到
6、大 //比较的轮数 for(inti=1;i7、 if(data[j]>data[j+1]){ //交换相邻两个数 swap(data,j,j+1); } } } }elseif(sortType.equals("desc")){//倒排序,8、从大排到小 //比较的轮数 for(inti=1;i
7、 if(data[j]>data[j+1]){ //交换相邻两个数 swap(data,j,j+1); } } } }elseif(sortType.equals("desc")){//倒排序,
8、从大排到小 //比较的轮数 for(inti=1;i
此文档下载收益归作者所有