Python找出最小的K个数实例代码


Posted in Python onJanuary 04, 2018

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复杂度性的考虑。以下几种思路当是笔者抛砖引玉,如果读者有兴趣可以自己再使用其他方法一一尝试。

思路1:利用冒泡法

临近的数字两两进行比较,按照从小到大的顺序进行交换,如果前面的值比后面的大,则交换顺序。这样一趟过去后,最小的数字被交换到了第一位;然后是次小的交换到了第二位,。。。,依次直到第k个数,停止交换。返回lists的前k个数(lists[0:k],前闭后开)

思路2:使用快排中的partition思想。

①我们设定partition函数的哨兵为key=lists[left],在partition函数中完成一轮比较的结果是,比key大的数都在其右边,比key小的数放在其左边。完成该轮后返回其left=right时left的值。

②我们判断left的值是比k大还是小:

如果left的值比k大,说明上轮partition之后,lists中前left个小的数在左边,其余的数在其右边,我们还需要把寻找范围缩小,下次找的时候只在数组前面left个数中找了。

如果left的值比k小,说明上轮partition之后,前left个数找的太少了,我们需要再往数组的后面找。

# -*- coding: utf-8 -*- 
""" 
Date: Tue Sep 19 10:50:11 2017 
 
Created by @author: xiaoguibao 
 
E-mail: mingliumengshao@163.com 
 
Content: 找最小的k个数 
 
""" 
def function1(lists,k): 
#  冒泡法 
  length = len(lists) 
  for i in range(k): 
    for j in range(i+1,length): 
      if lists[i] > lists[j]: 
        lists[j],lists[i] = lists[i],lists[j] 
  return lists[0:k] 
 
""" 
思路2 包括2个部分function2_partion和function2 
""" 
 
def function2_partion(lists,left,right): 
  #划分函数处理部分 
  key = lists[left] 
  while left < right: 
    while left < right and lists[right] >= key: 
      right -= 1 
    lists[left] = lists[right] 
    while left < right and lists[left] <= key: 
      left += 1 
    lists[right] = lists[left] 
  lists[right] = key 
  return left 
def function2(lists,k): 
  #划分法主要函数部分 
  length = len(lists) 
  left = 0 
  right = length - 1 
  index = function2_partion(lists,left,right) 
  while k!=index: 
    if index > k-1: 
      right = index-1 
    else: 
      left = index+1 
    index = function2_partion(lists,left,right)  
  return lists[0:k] 
 
def main(): 
  lists = [1,1,6,4,11,9,2,10,3] 
#  print "思路一(冒泡法):",function1(lists,8) 
  print "思路二(划分法):",function2(lists,8) 
if __name__=="__main__": 
  main()

总结

以上就是本文关于Python找出最小的K个数实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
利用python求相邻数的方法示例
Aug 18 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
Python程序运行原理图文解析
Feb 10 Python
用Django写天气预报查询网站
Oct 21 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
django中的图片验证码功能
Sep 18 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
Python编程把二叉树打印成多行代码
Jan 04 #Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 #Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 #Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 #Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 #Python
python实现简易云音乐播放器
Jan 04 #Python
Python语言描述连续子数组的最大和
Jan 04 #Python
You might like
php设计模式  Command(命令模式)
2011/06/17 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
JS定义函数的几种常用方法小结
2019/05/23 Javascript
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python切片索引用法示例
2018/05/15 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
投标单位介绍信
2014/01/09 职场文书
12岁生日感言
2014/01/21 职场文书
办公室文员工作职责
2014/01/31 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
高中校园广播稿
2014/10/21 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
食堂管理制度范本
2015/08/04 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
JavaScript组合继承详解
2021/11/07 Javascript
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS