数据结构

本文借鉴《我的第一本算法书》,算是对自己学习的总结,也希望分享下所学知识~~

1.数组
添加 O(n),查找 O(1)
电话簿问题:
1.把所有的电话保存到一张表里。
优点:添加数据简单
缺点:查找数据麻烦
2.把所有的电话按照拼音顺序排列。
优点:查找数据简单
缺点:添加数据麻烦
3.使用不同的表存储不同拼音首字母。
兼容1、2的缺点


2.链表
扩展:循环链表、双向链表
添加删除 O(1),查找 O(n)


3.栈
Last In First Out
括号匹配问题
深度优先搜索


4.队列
FIFO
广度优先搜索


5.哈希表
数据空间小,就会冲突。
数据空间大,就会造成内存的浪费。
解决冲突办法:链地址法、开放地址法。


6.堆
子节点必定大于父节点
a).当添加新数据时,一般放在最下面一行靠左的位置。当没有多余空间,就再往下另起一行,把数据加载这一行的最左端,若不符合规则,就交换父子节点的位置。
b).当取数据时候,取出的是上面最小的数据,将最后的数据移到最顶端,若子结点的数字小于父节点,就选择两个中的较小的一个交换,一直交换直到满足规则位置。

取出最小值的时间为O(1)
重构树的时间复杂度为O(logn)
添加数据的与树的高度成正比也是O(logn)


7.二叉查找树
规则:每个节点最多有两个子节点,每个节点的值都大于左子树任意的值,同时小于右子树任意的值
添加:如果小就左移,如果大就右移
删除:如果没有子节点直接删除,其他情况去左子树寻找最大节点

如果树的形状较为均衡,就是O(log2n)
如果树单侧纵向延伸么就是O(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值