上文中介绍了快速排序,基本算法和结构之快速排序,在最后的分析时,提到可使用随机参考元的选择方案在数据量大的时候提拆分的平衡性。但未提供具体实现。本文提供具体实现。
随机选择的伪代码:
1RANDOM-PARTITION (data, left, right)
2 i = RANDOM(left to right)
3 SWAP(data[i], data[right])复制
编码示例
1// go
2func randPartition(data []int, left, right int) int {
3 // 随机索引
4 rand.Seed(time.Now().UnixNano())
5 randI := left + rand.Intn(right-left)
6 // 交互随机元素和末尾元素
7 data[right], data[randI] = data[randI], data[right]
8 return partition(data, left, right)
9}复制
1# python
2def randPartition(data, left, right):
3 import random
4 randI = random.randint(left, right)
5 data[randI], data[right] = data[right], data[randI]
6 return partition(data, left, right)复制
1// JavaScript
2function randPartition(data, left, right) {
3 let randI = left + Math.ceil(Math.random()*(right-left))
4 let t = data[right]
5 data[right] = data[randI]
6 data[randI] = t
7 return partition(data, left, right)
8}复制
1// PHP,to be continued. 该你了
复制
文章转载自红牛编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1264次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
732次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
605次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
511次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
479次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
472次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
362次阅读
2025-04-18 10:01:22
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
317次阅读
2025-05-07 10:06:14
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
289次阅读
2025-04-29 10:35:54
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
276次阅读
2025-04-23 12:04:21