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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
Python实现网站注册验证码生成类
Jun 08 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
Python API自动化框架总结
Nov 12 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
给ubuntu18安装python3.7的详细教程
Jun 08 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
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python内置模块turtle绘图详解
2017/12/09 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python中的全局变量如何理解
2020/06/04 Python
Python实现验证码识别
2020/06/15 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
初中作文评语
2014/12/25 职场文书
员工离职感谢信
2015/01/22 职场文书
工作检讨书大全
2015/01/26 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python