霍尔分区不正确?

2024-09-27 21:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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。当我手动运行这个程序时,得到了相同的结果。你知道吗

我错过了什么让配分函数出错的东西吗?你知道吗


Tags: 代码trueifmainusrdeflistart

热门问题