asp制作网站,软件开发工程师简历范文,便宜网站开发培训,名片在哪个网站做堆
堆是一种树形结构#xff1a;满足两个主要性质
堆是一种完全二叉树#xff1a;堆中所有层级除了最后一层都是完全填满的#xff0c;且最后一层的节点都是向左排列堆中的任意节点都不大于#xff08;或不小于#xff09;其子节点的值#xff0c;这也是堆的属性
impo…堆
堆是一种树形结构满足两个主要性质
堆是一种完全二叉树堆中所有层级除了最后一层都是完全填满的且最后一层的节点都是向左排列堆中的任意节点都不大于或不小于其子节点的值这也是堆的属性
import heapq as hp
import numpy as npdatanp.arange(10)
np.random.shuffle(data)# 定义一个heap列表
heap[]
#将数据堆入
for i in data:hp.heappush(heap,i)print(heap)hp.heappush(heap,100)print(列表中最小元素,hp.heappop(heap)) #弹出最小元素# heapify(heap) 可以将任意的列表转换为堆
datanp.random.randint(1,100,size(10)).tolist()
print(data)
print(转换前,type(data))
hp.heapify(data)
print(转换后,type(data))print(列表中最小元素,hp.heappop(data))# heapreplace(heap,n) 弹出最小元素并且被n替代
hp.heapreplace(data,1000)
print(data)# nlargest(n,heap) #返回第n个最大值
print(第一个最大值,hp.nlargest(1,data))
print(第二个最大值,hp.nlargest(2,data))#nsmallest(n,heap) #返回第n个最小值
print(第一个最小值,hp.nsmallest(1,data))
print(第二个最小值,hp.nsmallest(2,data))# 合并堆
data1np.random.randint(1,10,5).tolist()
data2np.random.randint(1,10,5).tolist()
hp.heapify(data1)
hp.heapify(data2)
mergedlist(hp.merge(data1,data2)) #合并两个堆
print(合并堆,list(merged))
print(data1,data1)# 堆排序
# mergedhp.merge(data1,data2)
print(堆排序前,list(merged))
sortd_data[hp.heappop(merged) for _ in range(len(list(merged)))]
print(堆排序后,sortd_data)栈
栈是一种线性结构特点是后进先出。栈主要有两个操作分别为压栈和弹栈。压栈是将数据压入栈顶弹栈主要是从栈顶弹出元素。
栈的特点
后进先出栈的容量是固定的当栈达到最大容量的时候再次压栈会导致溢出栈的元素不可以随机访问每次只能通过弹栈来获取栈顶元素