求问两个函数有什么不同,python的

一个死循环 一个正常运行
逻辑一样啊

 def PartitionDemo(a,p,r):
    x=a[p]
    start=p
    end=r
    while(start<end):
        while a[end]>=x and start<end :
            end-=1
        while a[start]<=x and start<end :
            a[start]=a[end]
            start+=1
            a[end]=a[start]
    a[start]=x
    return start

def Partition2(array,low,high):
    key = array[low]
    while low < high:
        print low,' ',high
        print a[low],' ',a[high],' ',key
        while low < high and array[high] >= key:
            high -= 1
        while low < high and array[high] < key:
            array[low] = array[high]
            low += 1
            array[high] = array[low]
    array[low] = key
    return low

这个是快速排序的分区代码,自己运行下就知道了

难道我写的不清楚 一个是我写的 一个是网上抄的 我写的那个死循环了 出不来