Python实现查找数组中任意第k大的数字算法示例


Posted in Python onJanuary 23, 2019

本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:

模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候,在前半部分搜索。与快排不同的是,每次都减少了一半的排序。

def partitionOfK(numbers, start, end, k):
  if k < 0 or numbers == [] or start < 0 or end >= len(numbers) or k > end:
    return None
  low = start
  high = end
  key = numbers[start]
  while low < high:
    while low < high and numbers[high] >= key:
      high -= 1
    numbers[low] = numbers[high]
    while low < high and numbers[low] <= key:
      low += 1
    numbers[high] = numbers[low]
  numbers[low] = key
  if low < k:
    return partitionOfK(numbers, start + 1, end, k)
  elif low > k:
    return partitionOfK(numbers, start, end - 1, k)
  else:
    return numbers[low]
numbers = [3,5,6,7,2,-1,9,3]
print(sorted(numbers))
print(partitionOfK(numbers, 0, len(numbers) - 1, 5))

输出:返回了第五大排序的数字

[-1, 2, 3, 3, 5, 6, 7, 9]
6

Python 相关文章推荐
Python中os和shutil模块实用方法集锦
May 13 Python
Django入门使用示例
Dec 12 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
解决python中画图时x,y轴名称出现中文乱码的问题
Jan 29 Python
Python列表切片操作实例总结
Feb 19 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
Python如何实现动态数组
Nov 02 Python
python烟花效果的代码实例
Feb 25 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 #Python
python读取图片任意范围区域
Jan 23 #Python
Python基于plotly模块实现的画图操作示例
Jan 23 #Python
python实现剪切功能
Jan 23 #Python
对python实现合并两个排序链表的方法详解
Jan 23 #Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 #Python
python实现石头剪刀布程序
Jan 20 #Python
You might like
php上传文件问题汇总
2015/01/30 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
python 连接各类主流数据库的实例代码
2018/01/30 Python
numpy中的高维数组转置实例
2018/04/17 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
python os.fork() 循环输出方法
2019/08/08 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
python的help函数如何使用
2020/06/11 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
让生命充满爱演讲稿
2014/05/10 职场文书
快递员岗位职责
2014/09/12 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
mysql函数全面总结
2021/11/11 MySQL
Python中的datetime包与time包包和模块详情
2022/02/28 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL