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