为了账号安全,请及时绑定邮箱和手机立即绑定

归并排序

标签:
Java 算法
import java.util.Arrays;

/**
 * 归并排序
 * @author 123
 *
 */
public class Sort8 {
	public static void merge(int[] A,int left,int right){
		int middle = (left+right)/2;
		int[] B = new int[middle-left+1];
		int[] C = new int[right-middle];
		int i1 = 0,j1 = 0;
		//原数组前半部分赋值给B[]
		for(int i=left;i<=middle;i++){
			B[i1] = A[i];
			i1++;
		}
		//原数组后半部分赋值给C[]
		for(int j=middle+1;j<=right;j++){
			C[j1] = A[j];
			j1++;
		}
		int i2 = 0,j2 = 0,index = left;
		//排序
		while(i2<B.length&&j2<C.length){
			if(B[i2]<=C[j2]){
				A[index] = B[i2];
				i2++;
			}else{
				A[index] = C[j2];
				j2++;
			}
			index++;
		}
		//将未排完部分直接放到数组末尾
		while(i2==B.length&&j2<C.length){
			A[index]=C[j2];
			j2++;
			index++;
		}
		while(j2==C.length&&i2<B.length){
			A[index]=B[i2];
			i2++;
			index++;
		}
		System.out.println("Stage  "+Arrays.toString(A));
	}
	public static void mergeSort(int[] A,int left,int right){
		//如果一组分好数组只有1个元素,返回
		if(left==right){
			return;
		}else{
			int middle = (left+right)/2;
			mergeSort(A,left,middle);
			mergeSort(A,middle+1,right);
			merge(A,left,right);
		}
	}
}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消