首页 > 编程语言 > 详细

MergeSort算法

时间:2021-04-01 00:49:03      阅读:33      评论:0      收藏:0      [点我收藏+]

MergeSort 算法

1.问题

对一个数组进行排序,使其有序
技术分享图片

2.解析

利用归并算法,将数组不断拆分成一个数字,最后不断归并、返回,形成一个有序数组。
技术分享图片

3.设计

MergeSort算法

function void merge(int[] array, int left, int mid, int right)
	int[] temp ←new int[right – left + 1];
	int s1 ←left, s2 ←mid + 1, index ←0;
	while s1 <= mid and s2 <= right do:
		if array[s1] <= array[s2] do:
			temp[index] ← array[s1];
			index ← index + 1;
				s2 ← s2 + 1;
			else do:
				temp[index] ← array[s2];
				index ← index + 1;
				s2 ←  s2 + 1;
		while s1 <= mid do:
		temp[index] ← array[s1];
		index ← index + 1;
			s2 ← s2 + 1;
		while s2 <= right do:
			temp[index] ← array[s2];
			index ← index + 1;
			s2 ←  s2 + 1;

		for I = 0 to temp.length do:
			array[I + left] = temp[i];

	function void mergesort(int[] array, int start, int end)
		if start >= end return;
		int mid = (start + end) >>> 1;
		mergesort(array, start, mid);
		mergesort(array, mid + 1, end);
		merge(array, mid + 1, end);

4.分析

O(n) =log2n

5.源码

https://github.com/JessySnow/Algorithm/blob/master/src/T4/MergeSort.java

MergeSort算法

原文:https://www.cnblogs.com/jessysnow/p/14603845.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!