我尝试计算轴与快速排序中的值之间的比较。但是当我使用2个返回值创建递归方法时,代码不喜欢它。那么有人能帮我解释一下错误是什么吗?或者知道其他计算比较的方法吗?(没有全局变量)
def myPartition(a, lo, hi, co):
pivot = a[hi]
i = (lo - 1)
for j in range (lo, hi):
co = co + 1
if a[j] <= pivot:
i = i + 1
a[i], a[j] = a[j],a[i]
a[i+1], a[hi] = a[hi],a[i+1]
res_i = i+1
return res_i, co
def myQuicksort_a(a, lo, hi, co):
if lo >= hi:
return a
p, co_res_a = myPartition(a, lo, hi, co)
print("co_res_a:",co_res_a)
a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
# a = myQuicksort(a, p+1, hi)
return a, co_res_b
array = [0,3,5,2,4,1,2,3]
l = len(array)
result, counter = myQuicksort_a(array,0,l-1, 0)
print(result)
print(counter)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-62d9d9dc7ae9> in <module>
27 array = [0,3,5,2,4,1,2,3]
28 l = len(array)
---> 29 result, counter = myQuicksort_a(array,0,l-1, 0)
30 print(result)
31 print(counter)
<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
21 p, co_res_a = myPartition(a, lo, hi, co)
22 print("co_res_a:",co_res_a)
---> 23 a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
24 # a = myQuicksort(a, p+1, hi)
25 return a, co_res_b
<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
21 p, co_res_a = myPartition(a, lo, hi, co)
22 print("co_res_a:",co_res_a)
---> 23 a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
24 # a = myQuicksort(a, p+1, hi)
25 return a, co_res_b
<ipython-input-4-62d9d9dc7ae9> in myQuicksort_a(a, lo, hi, co)
21 p, co_res_a = myPartition(a, lo, hi, co)
22 print("co_res_a:",co_res_a)
---> 23 a, co_res_b = myQuicksort_a(a, lo, p-1, co_res_a)
24 # a = myQuicksort(a, p+1, hi)
25 return a, co_res_b
ValueError: too many values to unpack (expected 2)
您应该修复这部分代码
在
myQuicksort_a
函数中。因为一旦使用此路径,函数将返回一个而不是两个结果。因此,得到一个错误,该值不能分解为两个相关问题 更多 >
编程相关推荐