当前课程知识点:数据结构(下) > 第十二章 排序 > (a4)快速排序:变种 > 12a4-3: 实现
在这里我们就给出
这个新的partition算法的一种实现
沿用我们的习惯
依然将首元素作为候选轴点
接下来是一个循环
我们将反复的考察子区间U的首元素
也就是由K所指定那个元素
按照刚才所介绍的算法原理
如果当前的这个元素K
相对于候选轴点而言更小
我们就需要将它归入到子序列L当中
我们刚才讲过
这可以通过在子序列G的首元素
与元素K之间的一次交换来完成
至此你或许会感到疑惑
是的
如果当前元素K不小于候选轴点
又该如何呢
也就是说这里的if
按说还应该有一个配对的else
没错 的确应该有一个else
只不过这里的else是隐藏的 看不见的
刚才我们已经分析过
在else那种情况下
我们只需简明的令K递增一个单位
而实际上在刚才if的那个分支
本来也应该有一个K递增的功能
既然无论if或else
我们都需要令K向后平移一个单位
因此不妨将这两种情况合并起来
统一记入for循环的更新环节
如此不仅if分支中的K++可以省略掉
而更重要的是整个else分支
也不必显示给出了
当然在整个循环退出之后
算法返回之前
我们还需要另做一次交换操作
实现候选节点的真正就位
另外一点需要倒过来补充说明的是
在算法的入口处
我们还需要通过在整个序列中
随机的选取一个元素
并将它与首元素互换
实现对候选轴点更为随机的选取
从而降低最坏情况出现的概率
如我们此前所介绍的
与三者取中法一样
这也是为此可以采用的常见手法
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试