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正则捕获操作示例
Aug 19 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
Python Django 前后端分离 API的方法
Aug 28 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
python 表格打印代码实例解析
Oct 12 Python
如何使用Cython对python代码进行加密
Jul 08 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
PyTorch 如何自动计算梯度
May 23 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
用PHP动态创建Flash动画
2006/10/09 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
python实现web方式logview的方法
2015/08/10 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
详解python tkinter 图片插入问题
2020/09/03 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
法律专业应届生自荐信范文
2014/01/06 职场文书
进口业务员岗位职责
2014/04/06 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
教导主任个人总结
2015/03/03 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Mysql文件存储图文详解
2021/06/01 MySQL
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers