算法学习---分治法和快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习---分治法和快速排序相关的知识,希望对你有一定的参考价值。
“分治者,分而治之也”分治法的主要思想就是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); } }
以上是关于算法学习---分治法和快速排序的主要内容,如果未能解决你的问题,请参考以下文章