"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)