备份
2025-08-03 14:34:08
发布于:河北
归并排序:
先划分,再合并
1、判断结束条件:
如果l>=r:不符合条件,return
2、划分:
定义中间数mid
分成(l,mid)和(mid+1,r)
跳转
3、合并:两个序列分别为[l,mid]和[mid+1,r],要从最左边开始,依次比较
判断两个序列是否有剩余,有剩余的,全部放入数组
把数组重新赋给a数组(注意边界)
输出数组(需要的话)
快速排序:
递归处理
1、定义、输入:
2、递归(升序):(a,l,r)
l>=r 只有一个元素,不能划分,返回
找到一趟快速排序后,记录轴的位置(a,l,r)
递归处理左右两边(a,l,pos-1)和(a,pos+1,r)
跳转
(将 [l,r] 以基准点 k 将序列拆分为:
不大于 k 的部分[l , pos-1]
不小于 k 的部分[pos+1 , r]
v 的部分 pos
跳转)
3、找轴的位置,保证轴左边的都比轴小,右边的都比轴大
l 和 r 分别为左右端点,k为轴( k = a[l] )
while循环:
右边的元素比轴大,右端点左移(循环)
a[l] = a[r]//交换
左边的元素比轴小,左端点右移(循环)
a[r] = a[l]//交换
a[l] = k
返回轴位置k
这里空空如也
有帮助,赞一个