使用python自帶heapq模組
import heapq
import random
randomlist =
[random.randint(0,
100)
for _ in
range(10
)]#將randomlist所有數變負數,
newlist =
[-x for x in randomlist]
#借助heapq,生成負數最小數的小頂堆
heapq.heapify(newlist)
#將負數的小頂堆取反,即是大頂堆
maxheaplist =
[-x for x in newlist]
print
(maxheaplist)
##方法2:
自己寫函式,
class
heap()
:def
__init__
(self, data=
):self.data = data
defadd(self, e)
: idx =
len(self.data)
parent_idx =
(idx -1)
//2while parent_idx >=0:
if self.data[idx]
> self.data[parent_idx]
: self.data[parent_idx]
, self.data[idx]
= self.data[idx]
, self.data[parent_idx]
idx = parent_idx
parent_idx =
(idx -1)
//2else
:break
defheapify
(self,
list):
self.data =
list
n =len(self.data)
for idx in
reversed
(range
(n //2)
):# reversed:返回乙個反轉的迭代器。
#從n//2到0, 做大頂堆
self._shiftdown(self.data, n, idx)
def_shiftdown
(self, arr, n, parent_idx)
:while
2* parent_idx +
1< n:
biggest_idx =
2* parent_idx +
1#比較左右子節點大小
if biggest_idx +
1< n and arr[biggest_idx +1]
> arr[biggest_idx]
: biggest_idx +=
1#比較子節點與父節點大小
if arr[parent_idx]
>= arr[biggest_idx]
:break
#若子節點較大,交換數值和位置;將子節點變成父節點,再次向下比較
arr[parent_idx]
, arr[biggest_idx]
= arr[biggest_idx]
, arr[parent_idx]
parent_idx = biggest_idx
defheapsort
(self)
: n =
len(self.data)
self.heapify(self.data)
for i in
range
(n -1)
:#將最大數與最後一位數交換,用「n - i - 1」個數做大頂堆
self.data[n - i -1]
, self.data[0]
= self.data[0]
, self.data[n - i -1]
self._shiftdown(self.data, n - i -1,
0)defshow
(self)
:return self.data
import random
randomlist =
[random.randint(0,
100)
for _ in
range(10
)]heap1 = heap(
)heap1.heapify(randomlist)
heap1.add(random.randint(0,
100)
)print
(heap1.show())
#輸出大頂堆
heap1.heapsort(
)print
(heap1.show())
#輸出排序後數列
python寫乙個服務 Python寫乙個服務
coding utf 8 import json from urllib.parse import parse qs from wsgiref.server import make server 定義函式,引數是函式的兩個引數,都是python本身定義的,預設就行了。定義檔案請求的型別和當前請求成功...
快速刪除乙個「大目錄」
我們在做前端開發的時候常用npm來管理包,npm會在專案目錄下生成node modules目錄,下面有海量的檔案,檔案通常都不大,但數量很多,如果你想要刪除這個目錄,那很可能就會出現下面這個畫面 耗費時間非常的長,而且很可能經過了漫長計算之後,還告訴你現在由於目錄處於被開啟狀態等原因沒法刪除,真是浪...
今天終於去了乙個大商場
來北京有半個月了,一直想去大商場裡刷點東西回來,吃夜銷或者早餐的。因為宿舍附近的都是些小小的超市,感覺東西貴,最重要的是感覺那些東西不正規,有很多快過期的,要不就是灰塵多多的,看到就不敢買。因為學習,一直想去找個大商場,去一直不敢去,因為時間總是不夠用,非常非常的不夠用,但是每天早上起的早點吧,想去...