算法数据结构

1.AVL树和红黑树

AVL树又称平衡二叉树查找,增加和删除节点通过树形旋转达到平衡
红黑树通过重新着色和左右旋转,更加高效完成增加和删除后的平衡
两者区别:相同节点的情况下,红黑树的高度可能更高,平均查找次数高于相同情况下的AVL树;插入时,两者都至多旋转两次;删除时,红黑树,至多旋转三次;

2.B树和B+树

每个节点同时存储key和data,B+树只有叶子节点才存储data,非叶子节点只存储key
区别:B+树非叶子节点不存储数据,内存页存放更多的key,数据存放的更加紧密,更好利用空间,叶子节点关联的数据具有更好的缓存命中率;B+树叶子节点是相连的,整棵树的遍历,只需一次线性遍历叶子节点即可;B树需要每一层的递归遍历, 相邻可能在内存中不相邻, 缓存命中性没有B+树好;B树每个节点包含key和value,访问离根节点更近,访问更迅速;

3.排序

内部:在内存中进行的

比较:
	插入:
		直接插入:将一个待排序的字段按其关键字的大小插入到已排序的一组记录上,适用数据量小
		希尔排序:把记录按下标的一定增量分组,对每组进行直接插入排序,每次排序后增量减一  适用数据中等
	选择:
		直接选择:每次在排序队列中找到最小的元素,和未排序序列第一个元素交换位置,再在剩余未排序序列中重复该操作
		堆排序:建立大根堆和小根堆,大根堆每个节点的值都不小于它的子节点值,小根堆每个节点的值不大于它的子节点值;大根堆,建立堆时最后一个节点作为当前节点,如存在父节点并且大于,就交换位置   数据大
	交换:
		冒泡:比较相邻的元素,第一个比第二个大就进行交换,对每一对相邻元素做同样的工作
		快速:选择一个基准元素,一部分小于基准,一部分大于基准;按照此方法进行递归
	归并:
		分成两部分,递归排序,最后进行合并

非比较:计数,基数,桶

外部:大量数据无法在内存中进行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值