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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
python实现括号匹配的思路详解
Aug 23 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
解析python实现Lasso回归
Sep 11 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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实现分页工具类分享
2014/01/09 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
jQuery实现开关灯效果
2020/08/02 jQuery
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python Django模板的使用方法
2016/01/14 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python剪切视频与合并视频的实现
2020/03/03 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
学习雷锋精神活动总结
2015/02/06 职场文书
会计工作能力自我评价
2015/03/05 职场文书
班委竞选稿范文
2015/11/21 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers