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 中文字符串的处理实现代码
Oct 25 Python
python通过scapy获取局域网所有主机mac地址示例
May 04 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
python中列表和元组的区别
Dec 18 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
python中调试或排错的五种方法示例
Sep 12 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 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中intval()等int转换时的意外异常情况
2013/06/21 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
php实现生成验证码实例分享
2016/04/10 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
python数字图像处理之高级形态学处理
2018/04/27 Python
python3实现猜数字游戏
2020/12/07 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
vscode调试django项目的方法
2020/08/06 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
试用期自我鉴定范文
2014/03/20 职场文书
住宅质量保证书
2014/04/29 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
自主招生专家推荐信
2015/03/26 职场文书
安全第一课观后感
2015/06/18 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers