读书人

lt;找工作 4gt;取n个数中最大的k个数

发布时间: 2012-12-21 12:03:49 作者: rapoo

<找工作 四>取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,非常不错,

读书人网 >编程

热点推荐