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实现ipsec开权限实例
Nov 11 Python
python保存数据到本地文件的方法
Jun 23 Python
Python json模块dumps、loads操作示例
Sep 06 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
Python模块的加载讲解
Jan 15 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
python字典进行运算原理及实例分享
Aug 02 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
js中的闭包学习心得
2018/02/06 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
金智子午JAVA面试题
2015/09/04 面试题
remote接口和home接口主要作用
2013/05/15 面试题
营业员演讲稿
2013/12/30 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
学生打架检讨书
2014/10/20 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
go xorm框架的使用
2021/05/22 Golang
Pygame Time时间控制的具体使用详解
2021/11/17 Python
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js