python - 快速排序的 Python 实现
问题描述
我正在尝试在 python 中实现快速排序,但我根本无法理解以下代码有什么问题:
def partition(myArray, start, end):
pivot = myArray[end]
pIndex = start
for i in range(0, end+1):
if myArray[i] <= pivot:
myArray[i], myArray[pIndex] = myArray[pIndex], myArray[i]
pIndex += 1
myArray[pIndex], myArray[end] = myArray[end], myArray[pIndex]
return pIndex
def quicksort(myArray, start, end):
if start < end:
pIndex = partition(myArray, start, end)
quicksort(myArray, start, pIndex-1)
quicksort(myArray, pIndex+1, end)
exampleArray = [7, 2, 1, 6, 8, 5, 3, 4]
quicksort(exampleArray, 0, len(exampleArray)-1)
print(exampleArray)
显然,在分区函数的 for 循环中超过了最大递归深度。我不确定,但我认为这与 python 不计算 range() 的最后一个条目的方式有关。我已经尝试了每一种组合。
我知道,这可能太具体了,无法在论坛中提问,但我完全被卡住了。任何人都可以看到有什么问题吗?
解决方案
推荐阅读
- r - 如何使用 shinydashboardPlus 的轮播实现动态数量的幻灯片?
- python-3.x - 我正在尝试显示搜索值并已填写详细信息,但我看不到最后 3 列的输入值?帮助申请
- python - 错误:'PyThreadState' {aka 'struct _ts'} 没有名为 'exc_type' 的成员;你的意思是“curexc_type”吗?构建 Cython 扩展时
- xslt - 通过连接 XSLT 1.0 中的两个字段进行分组
- hadoop - 如何为不同的 Hadoop worker 设置不同的 SSH 端口?
- aws-api-gateway - 如何将 AWS api 网关与 EKS 集群集成以使用 ELB 访问部署在集群 IP 上的微服务
- html - CSS/HTML 的表格宽度问题
- python - 如何在列表Python中追加(列表中的列表)
- smalltalk - 在 Pharo Smalltalk 中以编程方式创建和删除类
- php - 致命错误:未捕获的 PDOException:SQLSTATE [42000]