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模块学习 datetime介绍
Aug 27 Python
Python标准库与第三方库详解
Jul 22 Python
Django中使用group_by的方法
May 26 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
python字典键值对的添加和遍历方法
Sep 11 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
Django 多环境配置详解
May 14 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python实现滑雪游戏
Feb 22 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
一篇文章带你搞懂Python类的相关知识
May 20 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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
运行Python编写的程序方法实例
2020/10/21 Python
一个入门级python爬虫教程详解
2021/01/27 Python
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
简历里的自我评价范文
2014/02/24 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
作文之亲情600字
2019/09/23 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
Python之matplotlib绘制饼图
2022/04/13 Python