数据结构演化

(1)影响IO效率的因素

  • 读写数据越大,速度越慢
  • 读写次数越多,速度越慢

(2)演化:顺序表——>哈希(冲突)——>树——>二叉树——>BST二叉查找(排序)树——>AVL平衡二叉树——>红黑树——>B-树(B树)——>B+树

​ 顺序表查找文件,线性结构,查找效率低,插入删除移动成本高。引入哈希

​ 哈希,哈希函数设计再好也会冲突,冲突多了又变回线性。优点:等值查询快;缺点:范围查找慢,退回线性查找。引入树

​ 二叉树无序,仍不适合做文件索引系统。无序我们将它变得有序,引入二叉查找树(左子树值<根,右子树值>根)

​ 二叉查找树,如果数值的插入是有序的,又退回线性。我们要做的是让它旋转,保持形态,引入二叉平衡树

​ 二叉平衡树,用插入的成本弥补查询的效率,适用于插入少查询多的情况,不适合插入多查询少的情况。为了解决平衡树不适合插入多查询少的情况,引入红黑树

​ 红黑树,与二叉平衡树的区别在于高度之差,红黑树要求最长子树不超过最短子树的二倍即可,这样做到了有序且旋转次数少,保证了查找效率和插入效率。但是,数据量很大的时候树的深度大,查找次数就会变多,IO效率会变慢。解决方法:如果随着数据的插入,树的深度不会变深,就不会存在上述问题了。树的深度会增加,是因为二叉,如果变成多叉,引入B树。

​ B树(一个有序的多叉树),解决了二叉树随着数据增加深度增加的问题,那么当数据甚至多到B树存不了时,而我们又不想增加深度来解决这个问题,此时引入B+树

​ B+树,将B树非叶子结点只存储记录和指针,所有数据存放在叶子结点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值