这是我在StackExchange上的第一篇文章,我试图找出一个简单的快速排序程序的代码有什么问题。我很确定某个整数只需要调整+-1或其他什么,所以我想保留格式。在
代码如下:
def QuickSort(Array_1,lower=0,upper=-1):
print(Array_1)
if upper==-1:
upper=len(Array_1)-1
if lower<upper:
Array_2,pivot=partition(Array_1,lower,upper)
Array_3=QuickSort(Array_2,lower,pivot-1)
Array_4=QuickSort(Array_3,pivot+1,upper)
return Array_4
else:
return Array_1
def partition(Array,lower,upper):
key=Array[upper]
print(Array)
i=lower
j=lower-1
z=0
for j in range(lower,upper-1):
print(i)
print(j)
if Array[j]<key:
Array[i],Array[j]=Array[j],Array[i]
i+=1
Array[upper],Array[i]=Array[i],Array[upper]
print(Array)
return (Array,i+1)
另外,我注意到的一点是,如果我将'jinrange(p,r-1)'改为'jinrange(p,r-1)',代码会无限地运行,但看起来不是应该的。思想?在
变量已被编辑为有意义的变量。我想他们都改对了。在
^{pr2}$
正如您已经猜到的,
partition
函数中只有一些小错误:1)您的}
for
循环没有处理最后一个元素,因为您使用了range(lower, upper-1)
而不是{2)最后应该返回
i
,而不是i+1
结果:
^{pr2}$以及
相关问题 更多 >
编程相关推荐