"oneline" algorithm

kth

def partition(seq):
    pi,seq=seq[0],seq[1:]
    lo = [ x for x in seq if x <=pi]
    hi = [ x for x in seq if x>pi]
    return lo,pi,hi

def select(seq,k):
    lo,pi,hi=partition(seq)
    m =  len(lo)
    if m ==k: return pi
    elif m<k: return select(hi,k-m-1)
    else : return select(lo,k)

kthOF2

def kth(arr1,arr2,k):
    #base case
    if len(arr1)==0: return arr2[k]
    elif len(arr2)==0: return arr1[k]

    mid1 = len(arr1)//2
    mid2 = len(arr2)//2

    if mid1+mid2<k:
        if arr1[mid1]>arr2[mid2]: 
              return kth(arr1,arr2[mid2+1:],k-mid2-1]
        else: return kth(arr1[mid1+1:],arr2,k=mid1-1)
    else:
        if arr1[mid1]>arr2[mid2]:
            return kth(arr1[:mid1],arr2,k)
        else:
            return kth(arr1,arr2[:mid2],k)        

quicksort

def quicksort(seq):
    if len(seq) <=1: return seq
    lo,pi,hi = partition(seq)
    return quicksort(hl)+[pi]+quicksort(hi)

 

 

 

 

posted on 2012-09-06 09:30  grep  阅读(233)  评论(0编辑  收藏  举报