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获取网页上图片下载地址的方法
Mar 11 Python
Python fileinput模块使用实例
May 28 Python
python中的代码编码格式转换问题
Jun 10 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
pytorch实现线性拟合方式
Jan 15 Python
python实现简单学生信息管理系统
Apr 09 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中如何防止表单的重复提交
2013/08/02 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python创建数字列表的示例
2019/11/28 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
python把一个字符串切开的实例方法
2020/09/27 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
药学专业个人自我评价
2013/11/11 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
服务员自我评价
2014/01/25 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
会计毕业生自荐书
2014/06/12 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
初三英语教学反思
2016/02/15 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
一文简单了解MySQL前缀索引
2022/04/03 MySQL
Nginx 匹配方式
2022/05/15 Servers
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL