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 基础学习教程
Feb 08 Python
python网络编程学习笔记(四):域名系统
Jun 09 Python
centos系统升级python 2.7.3
Jul 03 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 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调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
vue实现搜索功能
2019/05/28 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python 格式化输出百分号的方法
2019/01/20 Python
python字典改变value值方法总结
2019/06/21 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Python整数对象实现原理详解
2019/07/01 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
什么是makefile? 如何编写makefile?
2013/01/02 面试题
《沉香救母》教学反思
2014/04/19 职场文书
法制宣传口号
2014/06/16 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
业务员岗位职责
2015/02/03 职场文书
写给导师的自荐信
2015/03/06 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
vue中div禁止点击事件的实现
2022/04/02 Vue.js