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 相关文章推荐
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
python实现代码统计程序
Sep 19 Python
python计算n的阶乘的方法代码
Oct 25 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
详解Python多线程下的list
Jul 03 Python
五种Python转义表示法
Nov 27 Python
python自动化办公操作PPT的实现
Feb 05 Python
聊一聊python常用的编程模块
May 14 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
php适配器模式介绍
2012/08/14 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JS实现放大镜效果
2020/09/21 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
python 性能优化方法小结
2017/03/31 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
python实现京东秒杀功能
2018/07/30 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
安全资料员岗位职责
2013/12/14 职场文书
餐饮投资计划书
2014/04/25 职场文书
总经理任命书范本
2014/06/05 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
MySQL去除密码登录告警的方法
2022/04/20 MySQL