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基于PycURL自动处理cookie的方法
Jul 25 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
MySQL适配器PyMySQL详解
Sep 20 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
python获取中文字符串长度的方法
Nov 14 Python
python3人脸识别的两种方法
Apr 25 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
python区块链实现简版工作量证明
May 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 开发工具
2006/12/06 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python生成器(Generator)详解
2015/04/13 Python
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
python的sorted用法详解
2019/06/25 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
c++工程师面试问题
2013/08/04 面试题
《可爱的动物》教学反思
2014/02/22 职场文书
研发工程师岗位职责
2014/04/28 职场文书
2014年师德承诺书
2014/05/23 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis