QuickSort简解(分治思想) By ACReaper

快排又称为快速排序算法

快熟排序主要思想为:递归而分,重于分而治,而简与合。


治:


int partition(int A[],int st,int ed){
     	
        int key = A[st];//把第一个元素作为支点
	int j = st;//j一直指向小于等于key一类的尾元素
	for(int i = st + 1; i <= ed;i++){//扫描剩下元素,实现分成两类,一类小于等于key,一类大于等于key
        	if(A[i] <= key){
			j++;
			int temp = A[j];
			A[j] = A[i];
			A[i] = temp;
		}
	}
	int temp = A[j];
	A[j] = A[st];
	A[st] = temp;
	return j;
}
分:
	如何分画一个递归树就一目明了,我们可以知道在递归树中,每一个结点,都要实行“治”。所以有
	void QuickSort(int A[],int st,int ed){
		if(st < ed){
			int mid = partition(A,st,ed);
			QuickSort(A,st,mid - 1);//两个方向分别搜素所有结点,完成所有治理,完成排序。
			QuickSort(A,mid + 1,ed);
		}
	}
By ACReaper
2013 03 23 




posted @ 2013-03-23 16:05  算法黑魔王  阅读(202)  评论(0编辑  收藏  举报