本篇内容主要讲解“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中怎么实现快速排序+归并排序”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/wugong/blog/3067870