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 元类使用说明
Dec 18 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
Python模块 _winreg操作注册表
Feb 05 Python
QML用PathView实现轮播图
Jun 03 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
如何基于Python实现word文档重新排版
Sep 29 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下删除字符串中HTML标签的函数
2008/08/27 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
JavaScript的Function详细
2006/11/14 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
js实现车辆管理系统
2020/08/26 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
python开启debug模式的方法
2019/06/27 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
物业管理毕业生个人的求职信
2013/11/30 职场文书
关于环保的建议书
2014/05/12 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
给老婆的保证书
2015/01/16 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python