python写的找前k大的元素

def partition(array,i,j):
    if type(i)!=int or type(j)!=int:
        raise RuntimeError("Wrong type")
    pivot=array[j]
    k=i-1
    while i<j:
        if array[i]<pivot:
            k=k+1
            array[k],array[i]=array[i],array[k]
        i=i+1
    array[k+1],array[j]=array[j],array[k+1]
    return k+1

def LestK(array,k):
    if type(k)!=int:
        raise RuntimeError("Wrong type")
    start=0
    end=len(array)-1
    pivot=partition(array,start,end)
    while(pivot!=k-1):
        if pivot>k-1:
            end=pivot-1;
            pivot=partition(array,start,end)
        else:
            start=pivot+1
            pivot=partition(array,start,end)
    return array[0:k]

 

posted @ 2013-05-28 12:28  和道一文字  阅读(264)  评论(0)    收藏  举报