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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python的迭代器和生成器
Jul 29 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
基于Python实现签到脚本过程解析
Oct 25 Python
利用Python如何实时检测自身内存占用
May 09 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
8种常用的Python工具
Aug 05 Python
python des,aes,rsa加解密的实现
Jan 16 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
php 多个submit提交表单 处理方法
2009/07/07 PHP
php中的strpos使用示例
2014/02/27 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
JS array 数组详解
2009/03/22 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
Python实现将xml导入至excel
2015/11/20 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
简单了解django文件下载方式
2020/02/10 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
耐克美国官网:Nike.com
2016/08/01 全球购物
教师自荐信范文
2013/12/09 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python