发布于 2018-02-18 06:56:18 | 120 次阅读 | 评论: 0 | 来源: 网友投递
这里有新鲜出炉的Python3 官方中文指南,程序狗速度看过来!
Python编程语言
Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
本文实例讲述了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 "PHPERZ测试结果:"
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程序设计有所帮助。