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通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
python中urllib模块用法实例详解
Nov 19 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
Python lambda表达式用法实例分析
Dec 25 Python
Python实现图片添加文字
Nov 26 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
基于python检查矩阵计算结果
May 21 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python切片列表字符串如何实现切换
Aug 06 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 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
德生H-501的评价与改造
2021/03/02 无线电
二招解决php乱码问题
2012/03/25 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
python flask安装和命令详解
2019/04/02 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
python如何从文件读取数据及解析
2019/09/19 Python
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
往来会计岗位职责
2013/12/19 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
优秀部门获奖感言
2014/02/14 职场文书
迎七一演讲稿
2014/09/12 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
政风行风评议心得体会
2014/10/21 职场文书
食品安全责任书范本
2015/05/09 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书