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
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步