分治法之归并

###分治法的核心思想是将一个复杂的问题分为N个简单的小问题### #####所以分治法的第一步,就是要将问题“分”开##### #####第二步,是进行“治”##### #####或许还有第三步、第四部,因问题而异##### #####当我们遇到一个很大的问题,我们感觉无从下手,这时候我们就可以使用分治法进行操作了。我们将这一个问题的特殊实例划分成若干个子问题了,并且这些自问题在一定程度上更小了,就是说,原问题的规模n更小了,至此,第一步完成了。##### #####这时候我们可以进行第二步,将若干个小问题解决,并且将其结果合并成大问题的解,以上就是分治法的基本思想#####

######在归并排序算法中######

private static void merge(int[] a,int start,int m,int t){
	    int[] tmp=new int[t-start+1];
	    int i=start,j=m,k=0;
	    while(i<m&&j<=t){
	        if(a[i]<=a[i]){
	            tmp[k]=a[i];
	            k++;
	            i++;
	        }else{
	            j++;
	            k++;
	        }
	    }
	    while(i<m){
	        tmp[k]=a[j];
	        j++;
	        k++;
	    }
	    System.arraycopy(tmp, 0, a, start, tmp.length);
	}
	
	public static void mergeSort(int[] a,int start,int len){
		int size = a.length;
		int mid = size/(len<<1);
		int c = size&((len<<1)-1);
		if(mid==0)
			return;
		//进行一次归并
		for(int i=0;i<mid;++i){
			start=i*2*len;
			merge(a, start, start+len, (len<<1)+s-1);
		}
		//将剩下的数和倒数一个有序集合归并
		if(c!=0){
			merge(a, size-c-2*len, size-c, size-1);
			//递归
			mergeSort(a, 0, 2*len);
		}
	}

###斐波那契数列### ####斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)####

转载于:https://my.oschina.net/lwl1989/blog/487126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值