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 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
python如何更新包
Jun 11 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
python线程优先级队列知识点总结
Feb 28 Python
使用python求解迷宫问题的三种实现方法
Mar 17 Python
Python学习之时间包使用教程详解
Mar 21 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实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php object转数组示例
2014/01/15 PHP
php获取系统变量方法小结
2015/05/29 PHP
功能强大的php文件上传类
2016/08/29 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
Python实现登陆文件验证方法
2018/10/06 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
int在python中的含义以及用法
2019/06/27 Python
python3.7 的新特性详解
2019/07/25 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Pytorch转tflite方式
2020/05/25 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
办公室文书岗位职责
2013/12/16 职场文书
小区门卫值班制度
2014/01/24 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
于丹论语心得观后感
2015/06/15 职场文书
办公室日常管理制度
2015/08/04 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技