经典算法:归并排序算法 java实现

package MergeSortAlgorithm;

public class MergeSort {

	//归并,合并两个数组
	public static void merge(int[] data, int start, int center, int end) {
		//第一个数组的首位
		int i = start;
		//第二个数组的首位
		int j = center + 1;
		//缓存数组
		int[] tempArr = new int[end - start + 1];
		//缓存数组的小标
		int t = 0;
		while(i <= center && j <= end) {
			if(data[i] < data[j]) {
				//边赋值边自加,注意,这里是先赋值,后自加
				tempArr[t ++] = data[i ++];
			}else {
				tempArr[t ++] = data[j ++];
			}
		}
		//将剩余没有加完的,加到缓存数组中
		while(i <= center) {
			tempArr[t ++] = data[i ++];
		}
		while(j <= end) {
			tempArr[t ++] = data[j ++];
		}
		//将缓存数组复制到真数组中
		for(int k = start; k <= end; k ++) {
			data[k] = tempArr[k - start]; 
		}
	}
	
	//递归排序
	public static void sort(int[] data, int start, int end) {
		//初始化条件
		if(start >= end) return;
		//二分一下区间,然后递归
		int center = (start + end) / 2;
		sort(data, start, center);
		sort(data, center + 1, end);
		//合并两个排好序的数组
		merge(data, start, center, end);
	}
	
	//展示
	public static void display(int[] data) {
		sort(data, 0, data.length - 1);
		System.out.println("归并排序后的数组为:");
		for(int obj : data) {
			System.out.print(obj + "\t");
		}
	}
	
	public static void main(String[] args) {
		int[] data = {2,4,3,8,7,9,11,52,13,46,88,0,4,9,56,7};
		display(data);
	}
}

结果截图:

归并排序后的数组为:
0	2	3	4	4	7	7	8	9	9	11	13	46	52	56	88	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值