array=list(range(10))每次取出乙個最大random.shuffle(array)
(array)
deffunc1(array,n):
d,k={},n
while k>0:
maxnum,maxindex=-float("
inf"
),0
for index,value in
enumerate(array):
if index not
ind:
if value>=maxnum:
maxnum=value
maxindex=index
d[maxindex]=maxnum
k-=1
return list(d.values())[2]#
因為python現在的版本字典預設是有序的,所以可以這麼用
方案2,建立乙個小根堆,儲存前三大的資料,時間複雜度nlogk
def基數排序,然後取出第三大的數.假設最大數字數為i,時間複雜度為inlist2bucket(li,i):
buckets=[ for _ in range(10)]
for val in
li:
return
buckets
defbucket2lit(buckets):
li=for bucket in
buckets:
for val in
bucket:
return
lidef
radix_sort(li):
max_val=max(li)
i=0while 10**i<=max_val:
li=bucket2lit(list2bucket(li,i))
i+=1
return
liprint(radix_sort(array)[-3])
選擇第n大的數
借鑑快速排序演算法,返回每趟確定的乙個元素的位置,與n比較。在快速排序中使用隨機生成的樞軸,如果資料排列均勻,也可以選第乙個數作為樞軸。created by dgm on 2020 1 3.include include include using namespace std int n int a...
列表操作,列表的建立和輸出列表中相同的元素
這裡是用隨機數建立列表的,randint 0,15 為生成0 15內的隨機數,利用列表的推導進行列表的建立 from random import randint l1 randint 0,15 for i in range 10 l2 randint 0,15 for i in range 10 p...
學習筆記47 找出n個數中第k大的數
用基於比較的排序演算法,先做排序再去取數,時間複雜度最簡是o nlogn 但是有一種方法可以達到o n 的複雜度,就是遞迴的思想,用快速排序的方法,但是每次都只需要查詢一半。下面是python實現 def findnum a,first,last,dest iffirst last return a...