我的维基百科快速排序算法版本不起作用
My version of the quicksort algorithm from Wikipedia does not work
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i+1
val=A[i]
A[i]=A[hi]
A[hi]=val
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p+1,hi)
return(A)
如果我的输入是 [5,3,2,6,8,9,1]
,输出是 [1, 2, 5, 3, 8, 9, 6]
,这是为什么?
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i+1
val=A[i] #was in for loop was suppose to be outside of for loop
A[i]=A[hi] #was in for loop was suppose to be outside of for loop
A[hi]=val #was in for loop was suppose to be outside of for loop
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p+1,hi)
return(A)
x = [5,3,2,6,8,9,1]
print(quicksort(x,0,len(x)-1))
简单修复,分区中的缩进错误。
输出
[1, 2, 3, 5, 6, 8, 9]
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i+1
val=A[i]
A[i]=A[hi]
A[hi]=val
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p+1,hi)
return(A)
如果我的输入是 [5,3,2,6,8,9,1]
,输出是 [1, 2, 5, 3, 8, 9, 6]
,这是为什么?
def partition(A,lo,hi):
pivot = A[hi]
i=lo
#Swap
for j in range(lo,hi-1):
if (A[j] <= pivot):
val=A[i]
A[i]=A[j]
A[j]=val
i=i+1
val=A[i] #was in for loop was suppose to be outside of for loop
A[i]=A[hi] #was in for loop was suppose to be outside of for loop
A[hi]=val #was in for loop was suppose to be outside of for loop
return(i)
def quicksort(A,lo,hi):
if (lo<hi):
p=partition(A,lo,hi)
quicksort(A,lo,p-1)
quicksort(A,p+1,hi)
return(A)
x = [5,3,2,6,8,9,1]
print(quicksort(x,0,len(x)-1))
简单修复,分区中的缩进错误。
输出
[1, 2, 3, 5, 6, 8, 9]