我的维基百科快速排序算法版本不起作用

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]