python - Lomuto 算法验证测试用例
问题描述
我想在 Python 中创建一个测试函数,如果我通过列表和索引位置,它应该返回TRUE
,或者FALSE
该位置的数字是否按照Lomuto algorithm
.
例如
verify_partition([-2, 5, 2, 3, 4, 8, 9, 14, 10, 23], 5)
. 在这种情况下,它应该在排序后判断位置 5 的元素是否正确定位。
解决方案
对不起,我无法抗拒。
如果只有不同的元素:
def isplaced(a, i):
return sum(1 for e in a if e < a[i]) == i
对于非唯一元素,您还需要计算重复次数a[i]
:
def isplaced(a, i):
key = a[i]
lt_count = le_count = 0
for e in a:
if e < key:
lt_count += 1
elif e <= key:
le_count += 1
return lt_count <= i < le_count
更简洁:
def isplaced(a, i):
return sum(1 for e in a if e < a[i]) <= i < sum(1 for e in a if e <= a[i])
推荐阅读
- azure-durable-functions - 具有微服务的持久任务子编排
- javascript - 过滤数组混淆
- objective-c - 使用 NSURLSessionDataTask 将图像数据上传到设备时出现错误 400
- css - Safari flexbox:高度为 100% 的 flex 容器的孩子在其孙子高度为 100% 时溢出
- node.js - 如何将 node.js 添加到这个启动 SonarQube 的 docker-compose 文件中?
- java - 显示图标
- neo4j - Neo4j Cypher:从结果中排除某些节点
- javascript - 将 PDF 文件列表打印到客户的打印机
- python - 在 AWS 上运行 python 脚本的建议
- c# - 在c#中水平附加字符串