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中argsort()函数的实例用法
Mar 30 Python
Python 文件处理注意事项总结
Apr 10 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
python计算两个地址之间的距离方法
Jun 09 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
python爬虫快速响应服务器的做法
Nov 24 Python
Python基础详解之邮件处理
Apr 28 Python
Python 如何安装Selenium
May 06 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
如何删除多级目录
2006/10/09 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Python同时处理多个异常的方法
2020/07/28 Python
Python eval函数介绍及用法
2020/11/09 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
文明家庭先进事迹材
2014/01/27 职场文书
企业标语口号
2014/06/10 职场文书
大学生安全责任书
2014/07/25 职场文书
入党介绍人意见2015
2015/06/01 职场文书