您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
本篇内容主要讲解“Java中怎么实现快速排序+归并排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么实现快速排序+归并排序”吧!
package com.cjw.sort; import lombok.extern.slf4j.Slf4j; /** * 简单快速排序 * @author wucj * @date 2019-06-30 22:15 **/ @Slf4j public class QuickSortDemo { /** * 快速排序 * @param arr 数组 * @param start 开始 * @param end 结束 */ public void quickSort(int[] arr,int start,int end){ if(start<end){ int i=start; int value = arr[start]; for(int j=start+1;j<=end;j++){ if(arr[j]<value){ int temp = arr[j]; arr[j] = arr[i+1]; arr[i+1] = temp; i++; } } arr[start] = arr[i]; arr[i] = value; quickSort(arr,start,i-1); quickSort(arr,i+1,end); } } } package com.cjw.sort; /** * 简单归并排序 * @author wucj * @date 2019-06-30 23:06 **/ public class MergeSortDemo { public void sort(int[] arr,int low,int high){ int mid = (high+low)/2; if(low<high){ sort(arr,low,mid); sort(arr,mid+1,high); merge(arr,low,mid,high); } } private void merge(int[] arr,int low,int mid,int high){ int[] tempArr = new int[high-low+1]; int i=low; int j=mid+1; int k =0; while (i<=mid&&j<=high){ if(arr[i]<arr[j]){ tempArr[k++]=arr[i++]; }else{ tempArr[k++] = arr[j++]; } } while (i<=mid){ tempArr[k++] = arr[i++]; } while (j<=high){ tempArr[k++]=arr[j++]; } for(int n=0;n<tempArr.length;n++){ arr[n+low] = tempArr[n]; } } } 单元测试: package com.cjw.concurrent; import com.cjw.sort.MergeSortDemo; import com.cjw.sort.QuickSortDemo; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import java.util.Arrays; /** * @author wucj * @date 2019-06-30 22:24 **/ @Slf4j public class SortTest { private int[] arr1 = {11,213,134,44,77,78,23,43}; @Test public void quickSortTest(){ int[] arr11 = Arrays.copyOf(arr1,arr1.length); QuickSortDemo quickSortDemo = new QuickSortDemo(); quickSortDemo.quickSort(arr11,0,arr11.length-1); soutArr(arr1); soutArr(arr11); } @Test public void mergeSortTest(){ int[] arr11 = Arrays.copyOf(arr1,arr1.length); MergeSortDemo mergeSortDemo = new MergeSortDemo(); mergeSortDemo.sort(arr11,0,arr11.length-1); soutArr(arr1); soutArr(arr11); } private void soutArr(int[] tempArr){ StringBuffer s = new StringBuffer(); for (int i=0;i<tempArr.length;i++) { s.append(tempArr[i]); if(i<(tempArr.length-1)){ s.append("->"); } } log.info("数组排序结果:{}",s); } }
到此,相信大家对“Java中怎么实现快速排序+归并排序”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。