python3堆排序_python3medianof3快速排序实现在递归深度限制为m后切换到堆排序

调用的函数:(不考虑类)def partition( pivot, lst ):

less, same, more = list(), list(), list()

for val in lst:

if val < pivot:

less.append(val)

elif val > pivot:

more.append(val)

else:

same.append(val)

return less, same, more

def medianOf3(lst):

"""

From a lst of unordered data, find and return the the median value from

the first, middle and last values.

"""

finder=[]

start=lst[0]

mid=lst[len(lst)//2]

end=lst[len(lst)-1]

finder.append(start)

finder.append(mid)

finder.append(end)

finder.sort()

pivot_val=finder[1]

return pivot_val

主代码

^{pr2}$

因此,这段代码应该获取一个列表,并使用quicksort实现的中值3对其进行排序,直到达到深度递归限制,此时函数将使用堆堆然后,该代码的结果被输入另一个程序,该程序设计用于测试长度为1,1010010001000000000的算法。在

但是,当我运行代码时,告诉我长度1和10可以正常工作,但是在这之后,它给出了一个列表索引越界错误

3函数中值中的start=lst[0]

我不明白为什么。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值