归并算法

假设我们现在有一组数组Array。

归并算法_第1张图片

现在我们把他分成两部分。

归并算法_第2张图片

我们分别对2,1,4,8排序,和对5,7,3,6排序。

在2,1,4,8中我们有分别把它分为两部分。5,7,3,6同理。

2,1,4,8变成2,1和4,8。5,73,6变成5,7和3,6.

然后将分出来的数比较大小,创建一个数组,把比较好的数保存起来。再赋给原数组。

 

接下看代码实现。

package paixu;

public class C {
	
	public static void Procce(int arr[] ,int L ,int R ){
		if(R == L){
			return ;
		}
		int mid = (L + R) / 2  ;
		Procce(arr, L, mid); //左边分支
		Procce(arr, mid+1, R); //右边分支
		merge(arr,L,R,mid); //比较大小
	}
	

	private static void merge(int[] arr, int L, int R,int mid) {
		int [] help = new int[R-L+1] ;  //定义一个数组又来装比较之后数
		int   i = 0 ;
		int p0 = L ,p1 = mid + 1 ;
		//比较
		while(p0 <= mid && p1 <= R){
			help[i++] = arr[p0]

 

你可能感兴趣的:(算法)