找出最小或者最大的几个数我使用的是堆排序,效率为0(nlgn)

构建小顶堆返回末尾的k个数 或者 构建大顶堆返回前k个数

 #!/usr/bin/env python3

 def heap_sort(ary, num):
def siftdown(ary, e, begin, end):
i,j = begin, begin*2+1
while j < end:
if j+1 < end and ary[j+1] < ary[j]:
j += 1
if e < ary[j]:
break
ary[i] = ary[j]
i,j = j,j*2+1
ary[i] = e end = len(ary)
for i in range(end//2-1, -1, -1):
siftdown(ary, ary[i], i, end) #方法1
for i in range(end-1, -1, -1):
e = ary[i]
ary[i] = ary[0]
siftdown(ary, e, 0, i)
return ary[:-num-1:-1] #方法2
"""
li = []
for i in range(num):
if len(ary) > i:
li.append(ary[0])
e = ary[end-1-i]
siftdown(ary, e, 0, end-1-i)
else:
break
return li
""" if __name__ == '__main__':
a = [4,5,1,6,2,7,3,8]
num = int(input("最小的k个数:"))
print(heap_sort(a,num))

编程题目: 找出最小的k个数的更多相关文章

  1. 找出最小的k个数

    •已知数组中的n个正数,找出其中最小的k个数. •例如(4.5.1.6.2.7.3.8),k=4,则最小的4个数是1,2,3,4 •要求: –高效: –分析时空效率 •扩展:能否设计出适合在海量数据中 ...

  2. 数组中找出最小的K个数

    题目 给出一个数组,找出K个最小的值 例如给出数组{5,2,4,3,1},给定K值3,则输出结果为{2,3,1} 程序 先给出第一个版本的程序 public static void printKNum ...

  3. 【编程题目】查找最小的 k 个元素

    5.查找最小的 k 个元素(数组)题目:输入 n 个整数,输出其中最小的 k 个.例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,则最小的 4 个数字为 1,2,3 和 4. 算法里面学 ...

  4. 【剑指Offer面试编程题】题目1371:最小的K个数--九度OJ

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...

  5. 九度OJ 题目1371:最小的K个数

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...

  6. 剑指Offer 29. 最小的K个数 (其他)

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目地址 https://www.nowcoder.com/prac ...

  7. 剑指:最小的k个数

    题目描述 输入 n 个整数,找出其中最小的 K 个数.例如输入 4,5,1,6,2,7,3,8 这 8 个数字,则最小的 4 个数字是 1,2,3,4. 解法 解法一 利用快排中的 partition ...

  8. 华为OJ平台——输出最小的k个数

    输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...

  9. Java找N个数中最小的K个数,PriorityQueue和Arrays.sort()两种实现方法

    最近看到了 java.util.PriorityQueue.刚看到还没什么感觉,今天突然发现他可以用来找N个数中最小的K个数. 假设有如下 10 个整数. 5 2 0 1 4 8 6 9 7 3 怎么 ...

随机推荐

  1. 【网摘】JS 或 jQuery 获取当前页面的 URL 信息

    1.设置或获取对象指定的文件名或路径. window.location.pathname 2.设置或获取整个 URL 为字符串. window.location.href 3.设置或获取与 URL 关 ...

  2. Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. ​ 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存 ...

  3. 函数返回值retrun

    如果函数不写retrun,默认返回None. return多个对象,那么Python帮我们把这多个对象封装成一个元组返回. return   作用   结束函数.返回某个对象

  4. 第五周之Hadoop学习(五)

    在上周已经完成Hadoop的Java编程环境下的配置,这周则是通过对Eclipse的环境编程对Hadoop的API进行简单的调用 参考地址:https://blog.csdn.net/u0105237 ...

  5. springboot 模板

    参考:https://blog.csdn.net/wangb_java/article/details/71775637

  6. Checked exceptions: Java’s biggest mistake-检查型异常:Java最大的错误(翻译)

    原文地址:http://literatejava.com/exceptions/checked-exceptions-javas-biggest-mistake/ 仅供参考,毕竟我四级都没过 Chec ...

  7. 二次代价函数、交叉熵(cross-entropy)、对数似然代价函数(log-likelihood cost)(04-1)

    二次代价函数 $C = \frac{1} {2n} \sum_{x_1,...x_n} \|y(x)-a^L(x) \|^2$ 其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本 ...

  8. Linux命令:ping命令

    ping命令:类似于windows的ping命令,用于测试网络主机ICMP请求回应的 ping选项 ping -c  #             # 执行次数 -w #             #测试 ...

  9. Atcoder Beginning Contest 134E(二分查找(upper_bound),思维)

    #include<bits/stdc++.h>using namespace std;int a[100007],f[100007],ans,n;int main(){ cin>&g ...

  10. springmvc 请求出现400错误(当传入的参数类型是Date时加上下面代码试试)

    @InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) t ...