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安装第三方库及常见问题处理方法汇总
Sep 13 Python
pyqt5简介及安装方法介绍
Jan 31 Python
python实现超市扫码仪计费
May 30 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
pytest中文文档之编写断言
Sep 12 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python中entry用法讲解
Dec 04 Python
Python中的流程控制详解
Feb 18 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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的ASP防火墙
2006/10/09 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
给Python初学者的一些编程技巧
2015/04/03 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
浅析Python中字符串的intern机制
2020/10/03 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
大学四年规划书范文
2013/12/27 职场文书
家长会演讲稿范文
2014/01/10 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js