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 从远程服务器下载日志文件的程序
Feb 10 Python
python在多玩图片上下载妹子图的实现代码
Aug 13 Python
Python实现身份证号码解析
Sep 01 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
Python单链表原理与实现方法详解
Feb 22 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
python如何实现图片压缩
Sep 11 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
python元组打包和解包过程详解
Aug 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
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
CI框架中zip类应用示例
2014/06/17 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Python中type的构造函数参数含义说明
2015/06/21 Python
python黑魔法之参数传递
2016/02/12 Python
python 实时遍历日志文件
2016/04/12 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Python collections模块使用方法详解
2019/08/28 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
启动一个线程是用run()还是start()
2016/12/25 面试题
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
奖励通知
2015/04/22 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
小学运动会加油词
2015/07/18 职场文书
团组织关系介绍信
2019/06/24 职场文书