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中处理字符串之ljust()方法的使用简介
May 19 Python
python自带的http模块详解
Nov 06 Python
python学习基础之循环import及import过程
Apr 22 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
python线程中的同步问题及解决方法
Aug 29 Python
python实现单链表的方法示例
Sep 03 Python
python实现计算器功能
Oct 31 Python
pymysql的简单封装代码实例
Jan 08 Python
Python类super()及私有属性原理解析
Jun 15 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
安装不同版本的tensorflow与models方法实现
Feb 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+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
详解js闭包
2014/09/02 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
python编码总结(编码类型、格式、转码)
2016/07/01 Python
Python中防止sql注入的方法详解
2017/02/25 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Python坐标线性插值应用实现
2019/11/13 Python
毕业生个人投资创业计划书
2014/01/04 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL