#! /usr/bin/env python
#coding=utf-8
import random
def 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 ta
def 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,Sb
print kidSort([3,1,2,123,12,31,24,123,1,41,41,4,1,241,24,14,1,241,24],8)
快排+python,非常不错,