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中的对象拷贝示例 python引用传递
Jan 23 Python
python分割文件的常用方法
Nov 01 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
Python写的一个定时重跑获取数据库数据
Dec 28 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
python反编译教程之2048小游戏实例
Mar 03 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
杏林同学录(七)
2006/10/09 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
JS实现星星海特效
2019/12/24 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
利用python修改json文件的value方法
2018/12/31 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
Tensorflow 实现释放内存
2020/02/03 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
客服工作职责
2013/12/11 职场文书
活动总结书
2014/05/08 职场文书
爱护公物标语
2014/06/24 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
2015年导购员工作总结
2015/04/25 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技