我是python来实现Hoare分区的。代码如下,非常简单。你知道吗
#!/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()
但我没有得到正确的答案。输出类似于:[6, 2, 9, 5, 12, 8, 7, 4, 11, 19, 13, 21]
j=8,因为li[j]=11
在列表中间还有一个12。当我手动运行这个程序时,得到了相同的结果。你知道吗
我错过了什么让配分函数出错的东西吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐