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 thread 并发且顺序运行示例
Apr 09 Python
python批量提交沙箱问题实例
Oct 08 Python
python中使用mysql数据库详细介绍
Mar 27 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
利用python画出折线图
Jul 26 Python
python如果快速判断数字奇数偶数
Nov 13 Python
python求绝对值的三种方法小结
Dec 04 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
教你使用TensorFlow2识别验证码
Jun 11 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使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
python 如何引入协程和原理分析
2020/11/30 Python
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
仓管岗位职责范本
2014/02/08 职场文书
教师个人自我鉴定
2014/02/08 职场文书
大课间活动实施方案
2014/03/06 职场文书
二年级小学生评语
2014/04/21 职场文书
小学捐书活动总结
2014/07/05 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
企业法律事务工作总结
2015/08/11 职场文书
工商局调档介绍信
2015/10/22 职场文书
详解Python牛顿插值法
2021/05/11 Python
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby