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实现图书管理系统
Mar 12 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
Python 单例设计模式用法实例分析
Sep 23 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
Django中的模型类设计及展示示例详解
May 29 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
python里反向传播算法详解
Nov 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
php数组键名技巧小结
2015/02/17 PHP
图片按比例缩放函数
2006/06/26 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python创建进程fork用法
2015/06/04 Python
python文件与目录操作实例详解
2016/02/22 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
python实现linux下抓包并存库功能
2018/07/18 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python反编译学习之字节码详解
2019/05/19 Python
Python输出指定字符串的方法
2020/02/06 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
学校工会工作总结2015
2015/05/19 职场文书