Python实现返回数组中第i小元素的方法示例


Posted in Python onDecember 04, 2017

本文实例讲述了Python实现返回数组中第i小元素的方法。分享给大家供大家参考,具体如下:

#! /usr/bin/env python
#coding=utf-8
#期望为线性时间的选择算法
import random
class RandomSelect(object):
  def Partition(self,a, p, r):
    x=a[r]
    i=p-1
    for j in range(p, r):
      '''如果a[j]>x,则只需将j的值加1即可使循环不变量继续保持;
      如果a[j]<=x,则将下标i的值加1,并交换a[i]和a[j],再将
      j的值加1.此时循环不变量同样得到保持'''
      if a[j]<=x:
        i=i+1
        a[i], a[j]=a[j], a[i]
    a[i+1], a[r]=a[r], a[i+1]
    return i+1
  def RandomPartition(self,a, p, r):
    i=random.randint(p, r) #生成的随机数为p=<i<=r
    a[r], a[i]=a[i], a[r]
    return self.Partition(a, p, r)
  def randomSelect(self,a,p,r,i):
    if p==r:
      return a[p]
    q=self.RandomPartition(a,p,r)
    k=q-p+1
    if i==k:
      return a[q]
    elif i<k:
      return self.randomSelect(a,p,q-1,i)
    else:
      return self.randomSelect(a,q+1,r,i-k)
if __name__ == '__main__':
  print "三水点靠木测试结果:"
  a=[random.randint(0,20) for i in range(10)]
  print a
  #a=sorted(a)
  #print a
  r=RandomSelect()
  r.randomSelect(a,0,len(a)-1,3)
  print a[2]#数组中的第三小的数
  a=sorted(a)
  print a

运行结果:

Python实现返回数组中第i小元素的方法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
Python之re操作方法(详解)
Jun 14 Python
Python探索之自定义实现线程池
Oct 27 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
python代码xml转txt实例
Mar 10 Python
python新式类和经典类的区别实例分析
Mar 23 Python
python读取mysql数据绘制条形图
Mar 25 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 #Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 #Python
Python内置函数—vars的具体使用方法
Dec 04 #Python
Python实现基本数据结构中栈的操作示例
Dec 04 #Python
Python实现多进程共享数据的方法分析
Dec 04 #Python
Python数据结构之栈、队列的实现代码分享
Dec 04 #Python
关于Python数据结构中字典的心得
Dec 04 #Python
You might like
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
客户经理岗位职责
2013/12/08 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
元旦联欢会感言
2014/03/04 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
家长通知书家长意见
2014/12/30 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技