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 相关文章推荐
tensorflow 中对数组元素的操作方法
Jul 27 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
python3实现多线程聊天室
Dec 12 Python
如何用python写一个简单的词法分析器
Dec 18 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
详解Python中import机制
Sep 11 Python
python 实现单例模式的5种方法
Sep 23 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python实现微信表情包炸群功能
Jan 28 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 aes (ecb)解密后乱码问题
2015/06/22 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
python清除字符串中间空格的实例讲解
2018/05/11 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
2014年医院工作总结
2014/11/20 职场文书
大班上学期个人总结
2015/02/13 职场文书
高三数学教学反思
2016/02/18 职场文书