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完全新手教程
Feb 08 Python
简单文件操作python 修改文件指定行的方法
May 15 Python
python实现保存网页到本地示例
Mar 16 Python
Python中的CURL PycURL使用例子
Jun 01 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
flask框架自定义url转换器操作详解
Jan 25 Python
浅析Python迭代器的高级用法
Jul 16 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
详解python的异常捕获
Mar 03 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
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
python实现端口转发器的方法
2015/03/13 Python
python入门教程之识别验证码
2017/03/04 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python日期时间Time模块实例详解
2019/04/15 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
计算机相关的自我评价
2014/01/15 职场文书
书香校园活动方案
2014/02/28 职场文书
大型会议策划方案
2014/05/17 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
小组口号大全
2014/06/09 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
CSS基础详解
2021/10/16 HTML / CSS