Python 霍尔分区不正确?

Python 霍尔分区不正确?,python,algorithm,quicksort,Python,Algorithm,Quicksort,我使用python来实现霍尔分区。代码如下,非常简单 #!/usr/bin/env python #-*- coding:utf-8 -*- def partition(li,start,end): print li x=li[start] i=start-1 j=end+1 while True: while True: j-=1 if x>=li[j]:

我使用python来实现霍尔分区。代码如下,非常简单

#!/usr/bin/env python 
#-*- coding:utf-8 -*-

def partition(li,start,end):
    print li
    x=li[start]
    i=start-1
    j=end+1
    while True:
        while True:
            j-=1
            if x>=li[j]:
                break

        while True:
            i+=1
            if x<=li[i]:
                break   
        if i<j:
            li[i],li[j]=li[j],li[i]
            print "i:",i
            print "j:",j
            print li
        else:
            return j

def main():
    li=[13,19,9,5,12,8,7,4,11,2,6,21] 
    print partition(li,0,11)


if __name__ == '__main__':
    main() 
#/usr/bin/env python
#-*-编码:utf-8-*-
def分区(li、开始、结束):
打印李
x=li[开始]
i=开始-1
j=结束+1
尽管如此:
尽管如此:
j-=1
如果x>=li[j]:
打破
尽管如此:
i+=1

如果x,您希望得到什么输出?我希望得到正确的j,使li[start:j]中的每个元素都小于li[j:end]中的元素。例如:li=[6,2,9,5,12,8,7,4,11,13,19,21]和j=9