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之有容乃大的list(3)
Sep 15 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
Python中__init__.py文件的作用详解
Sep 18 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
python 经典数字滤波实例
Dec 16 Python
python学生信息管理系统实现代码
Dec 17 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Jupyter notebook如何修改平台字体
May 13 Python
Django通过json格式收集主机信息
May 29 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python日志模块logging用法
Jun 05 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模板引擎SMARTY
2006/10/09 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Python工程师面试必备25条知识点
2018/01/17 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
自我评价200字分享
2013/12/17 职场文书
元旦晚会策划方案
2014/02/18 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
Vue详细的入门笔记
2021/05/10 Vue.js
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫