`

<找工作 四>取n个数中最大的k个数

 
阅读更多
#! /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,非常不错,

分享到:
评论

相关推荐

    语言程序设计课后习题答案

    cout &lt;&lt; "The size of a short int is:\t" &lt;&lt; sizeof(short) &lt;&lt; " bytes.\n"; cout &lt;&lt; "The size of a long int is:\t" &lt;&lt; sizeof(long) &lt;&lt; " bytes.\n"; cout &lt;&lt; "The size of a char is:\t\t" &lt;&lt; sizeof(char) &lt;&lt; ...

    算法分析与设计习题集答案

    36、 (组合问题)求出从自然数1,2,…,n中任取r个数的所有组合。 37、 传教士与野人渡河问题。有M个传教士和M个野人准备渡河,船一次最多载2人,任何时刻野人数不能多于传教士数,但允许全部为野人。编写算法给出...

    整理后java开发全套达内学习笔记(含练习)

    byte &gt; short &gt; int &gt; long &gt; float &gt; double char 」 注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况: int&gt;float; long&gt;float; long&gt;double. 看一下他们的有效位就明白。 二进制是无法精确的...

    (重要)AIX command 使用总结.txt

    &lt;1&gt; mklv -y lvinformix -c 2 rootvg 64 //在卷组rootvg上创建逻辑卷lvinformix, 大小为64(LP)×16M=1G, 磁盘镜像需用-c参数指定副本数 &lt;2&gt; crfs -v jfs -d lvinformix -m /opt/informix //在lvinformix上创建文件...

    程序员二进制计算器 v1.36

    当结果&gt;=1K且&lt;1M时,以K为单位输出,例如: %sz 123456.789 = 120.563271K 当结果&gt;=1M且&lt;1G时,以M为单位输出,例如: %sz 536870912 = 512.000000M 当结果&gt;=1G且&lt;1T时,以G为单位输出,例如: %sz 0x...

    直方图知识培训PPT资料.pptx

    本例数据个数n=100,故试取组数k=7。 第十二页,共36页。 第十三页,共36页。 以下直方图对应(duìyìng)那些常规控制图可以反映异常? 第二十五页,共36页。 (一)形状(xíngzhuàn)分析与判断: 分布虽然落在规格...

    《数据结构 1800题》

    i:=n*n WHILE i&lt;&gt;1 DO i:=i div 2; 14. 计算机执行下面的语句时,语句 s的执行次数为 _______ 。【南京理工大学 2000二、1(1.5分)】 FOR(i=l;i&lt;n-l;i++) FOR(j=n;j&gt;=i;j--) s; 15. 下面程序段的时间...

    新版Android开发教程.rar

    目前,联盟成员 数 量已经达到了 43 家。 移动手机联盟创始成员: Aplix 、 Ascender 、 Audience 、 Broadcom 、中国移动、 eBay 、 Esmertec 、谷歌、宏达电、英特尔、 KDDI 、 Living Image 、 LG 、 Marvell 、...

    计算机二级公共基础知识

    在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。 完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只...

    LINGO软件的学习

    LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。...一个对象列中至多有一个集名,而属性...

    常用算法代码

    | 取第 K 个元素 25 | 归并排序求逆序数 25 | 逆序数推排列数 25 | 二分查找 25 | 二分查找(大于等于 V 的第一个值) 25 | 所有数位相加 25 Number 数论 26 1 |递推求欧拉函数 PHI(I) 26 |单独求欧拉...

    你必须知道的495个C语言问题

    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么...

    你必须知道的495个C语言问题(PDF)

    例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main...

    华为编程开发规范与案例

    11群是四个群中最小的群,其中继计次表位于缓冲区的首位,打完电话后查询内存发现出中继群号在内存中是正确的,取完话单后再查就不正确了。 结 论: 话单池的一个备份指针Pool_head_1和中继计次表的头指针重合,...

    《你必须知道的495个C语言问题》

    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...

    C语言FAQ 常见问题列表

    o 7.1 我在一个源文件中定义了 char a[6], 在另一个中声明了 extern char *a 。为什么不行 ? o 7.2 可是我听说 char a[ ] 和 char *a 是一样的。 o 7.3 那么, 在 C 语言中 ``指针和数组等价" 到底是什么意思 ? ...

    基于AT89S52 单片的频率计

    的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频率 的1/24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由 相应的运行控制位TR 控制,当TR 置1 ,定时/计数器开始计数;当TR ...

Global site tag (gtag.js) - Google Analytics