熱線電話:13121318867

登錄
首頁精彩閱讀Python實現返回數組中第i小元素的方法示例
Python實現返回數組中第i小元素的方法示例
2018-03-27
收藏

Python實現返回數組中第i小元素的方法示例

這篇文章主要介紹了Python實現返回數組中第i小元素的方法,結合實例形式分析了Python針對數組的遍歷、排序、運算等相關操作技巧.

分享給大家供大家參考,具體如下:

#! /usr/bin/env python
#coding=utf-8
#期望為線性時間的選擇算法
importrandom
classRandomSelect(object):
  defPartition(self,a, p, r):
    x=a[r]
    i=p-1
    forjinrange(p, r):
      '''如果a[j]>x,則只需將j的值加1即可使循環不變量繼續保持;
      如果a[j]<=x,則將下標i的值加1,并交換a[i]和a[j],再將
      j的值加1.此時循環不變量同樣得到保持'''
      ifa[j]<=x:
        i=i+1
        a[i], a[j]=a[j], a[i]
    a[i+1], a[r]=a[r], a[i+1]
    returni+1
  defRandomPartition(self,a, p, r):
    i=random.randint(p, r)#生成的隨機數為p=<i<=r
    a[r], a[i]=a[i], a[r]
    returnself.Partition(a, p, r)
  defrandomSelect(self,a,p,r,i):
    ifp==r:
      returna[p]
    q=self.RandomPartition(a,p,r)
    k=q-p+1
    ifi==k:
      returna[q]
    elifi<k:
      returnself.randomSelect(a,p,q-1,i)
    else:
      returnself.randomSelect(a,q+1,r,i-k)
if__name__=='__main__':
  print"腳本之家測試結果:"
  a=[random.randint(0,20)foriinrange(10)]
  printa
  #a=sorted(a)
  #print a
  r=RandomSelect()
  r.randomSelect(a,0,len(a)-1,3)
  printa[2]#數組中的第三小的數
  a=sorted(a)
  printa

運行結果:

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢