Python實現返回數組中第i小元素的方法示例
更新時間:2017年12月04日 11:17:31 作者:愛橙子的OK繃
這篇文章主要介紹了Python實現返回數組中第i小元素的方法,結合實例形式分析了Python針對數組的遍歷、排序、運算等相關操作技巧,需要的朋友可以參考下
本文實例講述了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即可使循環(huán)不變量繼續(xù)保持; 如果a[j]<=x,則將下標i的值加1,并交換a[i]和a[j],再將 j的值加1.此時循環(huán)不變量同樣得到保持''' 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相關內容感興趣的讀者可查看本站專題:《Python數組操作技巧總結》、《Python字符串操作技巧匯總》、《Python函數使用技巧總結》、《Python入門與進階經典教程》及《Python數據結構與算法教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python使用py2neo創(chuàng)建neo4j的節(jié)點和關系
這篇文章主要介紹了python使用py2neo創(chuàng)建neo4j的節(jié)點和關系,第一步使用py2neo連接neo4j的方法然后根據dict創(chuàng)建Node,更多相關資料需要的朋友參考下面文章內容2022-02-02