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自动化测试工具Splinter简介和使用实例
May 13 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python删除某个字符
Mar 19 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python自动化之Ansible的安装教程
Jun 13 Python
Python列表切片常用操作实例解析
Dec 16 Python
Python3实现飞机大战游戏
Apr 24 Python
python语言是免费还是收费的?
Jun 15 Python
python批量修改交换机密码的示例
Sep 22 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php去除重复字的实现代码
2011/09/16 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python中sys.argv函数精简概括
2018/07/08 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
GMP办公室主任岗位职责
2014/03/14 职场文书
检举信的格式及范文
2014/04/04 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS