标签:规模 问题 sort 算法 ret span 比较 turn 治法
“分治者,分而治之也”分治法的主要思想就是1.若问题足够小,解决并返回 2.若问题规模不够小,减小问题规模。分治法,很容易理解,就是大而化小,小而化了的思想,把问题划分成你能解决的问题。
// 分治法 divide_and_conquer(P) { if(|P|<=n0){ process(P); } else{ divide P into smaller subinstances P1,P2,...,Pk for(int I=1;I<k;i++) yi=divide_and_conquer(P1); merge(y1,y2,...,yk); } } //快速排序 int partition(int a[],int p,int r) { int i=p; int j=r+1; int x=a[p]; while(true) { while(a[++i]<x); //找到>=的x while(a[--i]<x); //找到<=的x if(i>=j){ break; } swap(a,i,j); } a[p]=a[j]; a[j]=x; return j; } void quickSort(int a[],int p,int r) { if(p<r){ int q=partition(a,p,r); //找到参考比较元素 quickSort(a,p,q-1); //递归过程 quickSort(a,q+1,r); } }
标签:规模 问题 sort 算法 ret span 比较 turn 治法
原文地址:http://www.cnblogs.com/lytmy7/p/7498637.html