python数据结构堆栈

堆是一种树形结构:满足两个主要性质

  • 堆是一种完全二叉树:堆中所有层级除了最后一层都是完全填满的,且最后一层的节点都是向左排列
  • 堆中的任意节点都不大于(或不小于)其子节点的值,这也是堆的属性
import heapq as hp
import numpy as np

data=np.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) 可以将任意的列表转换为堆
data=np.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))

# 合并堆
data1=np.random.randint(1,10,5).tolist()
data2=np.random.randint(1,10,5).tolist()
hp.heapify(data1)
hp.heapify(data2)
merged=list(hp.merge(data1,data2))  #合并两个堆
print('合并堆',list(merged))
print('data1',data1)

# 堆排序
# merged=hp.merge(data1,data2)
print('堆排序前',list(merged))
sortd_data=[hp.heappop(merged) for _ in range(len(list(merged)))]
print('堆排序后',sortd_data)

栈是一种线性结构,特点是后进先出。栈主要有两个操作,分别为压栈和弹栈。压栈是将数据压入栈顶,弹栈主要是从栈顶弹出元素。

栈的特点:

  • 后进先出
  • 栈的容量是固定的,当栈达到最大容量的时候,再次压栈会导致溢出
  • 栈的元素不可以随机访问,每次只能通过弹栈来获取栈顶元素

相关推荐

  1. 数据结构PT2——堆栈/队列

    2024-01-11 13:32:05       34 阅读
  2. python 堆栈

    2024-01-11 13:32:05       50 阅读
  3. python数据结构

    2024-01-11 13:32:05       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 13:32:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 13:32:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 13:32:05       87 阅读
  4. Python语言-面向对象

    2024-01-11 13:32:05       96 阅读

热门阅读

  1. 9.网络进阶管理

    2024-01-11 13:32:05       48 阅读
  2. linux: netstat 与 ss 用法详解

    2024-01-11 13:32:05       49 阅读
  3. Wargames与bash知识13

    2024-01-11 13:32:05       41 阅读
  4. 2024系统分析师---论软件需求管理

    2024-01-11 13:32:05       56 阅读
  5. 在Microsoft Edge中访问只能在IE中加载的页面

    2024-01-11 13:32:05       48 阅读
  6. 关于ubuntu20.04(Linux)屏幕突然横屏的解决方案

    2024-01-11 13:32:05       58 阅读
  7. 用PHP来模拟雨滴的动态效果

    2024-01-11 13:32:05       59 阅读
  8. 1. Logback介绍

    2024-01-11 13:32:05       50 阅读