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使用win32com在百度空间插入html元素示例
Feb 20 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
Python探索之自定义实现线程池
Oct 27 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
python 读取数据库并绘图的实例
Dec 03 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
快速创建python 虚拟环境
Nov 28 Python
Python 实现RSA加解密文本文件
Dec 30 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
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
继续学习javascript闭包
2015/12/03 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
JS实现简易留言板特效
2019/12/23 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
在Python中使用Neo4j的方法
2019/03/14 Python
python3 线性回归验证方法
2019/07/09 Python
python实现横向拼接图片
2020/03/23 Python
python如何变换环境
2020/07/21 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
C#笔试题集合
2013/06/21 面试题
final, finally, finalize的区别
2012/03/01 面试题
外贸业务员求职信
2014/06/16 职场文书
销售人员求职信
2014/07/22 职场文书
售房委托书
2014/08/30 职场文书
华山导游词
2015/02/03 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers