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中的__init__和__new__
Mar 12 Python
python基于xml parse实现解析cdatasection数据
Sep 30 Python
python如何实现内容写在图片上
Mar 23 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python实现SMTP邮件发送
Jun 16 Python
python实现的人脸识别打卡系统
May 08 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
php 变量定义方法
2009/06/14 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
简单介绍Python中的RSS处理
2015/04/13 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python 自动去除空行的实例
2018/07/24 Python
python如何生成各种随机分布图
2018/08/27 Python
python爬取微信公众号文章
2018/08/31 Python
python yield关键词案例测试
2019/10/15 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
市级优秀班主任事迹材料
2014/05/13 职场文书
环保志愿者活动总结
2014/06/27 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
作息时间调整通知
2015/04/22 职场文书
2015年环保局工作总结
2015/05/22 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
用python修改excel表某一列内容的操作方法
2021/06/11 Python
Python中requests库的用法详解
2022/06/05 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS