分治法之经典算法一--合并排序

最近打算把算法捋一捋,这次是分治法的典型例子:合并排序。需要的朋友请自取哦!欢迎大家和我一起交流~~

1.合并排序算法思想:
将待排序的有n个元素的序列分割成两个规模大小相同的子数组,如果子数组规模到达容易求出排序时停止分割,否则继续分割。直到容易求出排序也就是子数组只有单元素时,我们把它视为容易解决排序的问题规模,我们认为这个具有单元素的子数组已经排好序,然后将两两相邻的子数组合并成所要求的序列,直到不再存在未合并的子数组,算法终止。
步骤:
先将待排序列分割成子数组;
当子数组只有单个元素时停止分割;
将这些子数组两两合并。

2.代码如下:
‘’’
//分治法_合并排序;
public class MergeSort {

public static void MergeSort1(Comparable a[],int left,int right){
	Comparable []b =new Comparable[right+1];
	if(leftm) {
			for(int q=j;q<=r;q++) 
				d[k++]=c[q];
			}
		else {
			for(int q=i;q<=m;q++)
				d[k++]=c[q];
		}
	
}
 //复制数组
  static void Copy(Comparable[] a, Comparable[] b, int left, int right) {
		for(int i=left;i<=right;i++) {
			a[i]=b[i];
		}
		
	}
public static void main(String[] args) {
	Comparable[] a= {23,5,9,16,30,25,17,18};
	MergeSort1(a,0,7);
	System.out.println("合并排序后结果:");
	for(int i=0;i<=7;i++) {
		System.out.print(a[i]+" ");
	}
	

}

}

‘’’

你可能感兴趣的:(分治法之经典算法一--合并排序)