Python 霍尔分区不正确?
我使用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]:
#!/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