<找工作 四>取n个数中最大的k个数
#! /usr/bin/env python#coding=utf-8import randomdef kidSort(s,k): if k<=0: return [] if len(s)<=k: return s sa,sb=partition(s) ta=kidSort(sa,k) tb=kidSort(sb,k-len(sa)) ta.extend(tb) return tadef partition(s): Sa=[] Sb=[] rand=random.randint(0,len(s)) s[0],s[rand%len(s)]=s[rand%len(s)],s[0] p=s[0] for z in s[1:]: if z>p: Sb.append(z) else: Sa.append(z) Sa.append(p) return Sa,Sbprint kidSort([3,1,2,123,12,31,24,123,1,41,41,4,1,241,24,14,1,241,24],8)?
快排+python,非常不错,