线性表与树表
查找
根据给定的值,在查找表中确定一个关键字等于给定值的数据元素。
- 关键字:唯一标识一个记录的关键字
- 次关键字:用以识别若干记录的关键字称之为次关键字。
查找表可以分为两类——静态查找表和动态查找表(查不到要增加,或者查到了就删除)
如何评价查找算法?
平均查找长度:也称为平均比较次数。
线性表的查找
顺序查找
也就是遍历查找
每次循环中都要判断是不是越界了,就影响效率,优化是把关键字放在表头,到头了就得到关键字,省去了每次查找的判断越界。
二分查找
- ALS(平均查找长度)=log2(n)
- 缺点:只适用于有序表,且为顺序存储结构。
分块查找
建立索引,索引指向目标附近。
适用情况:快速查找且动态变化的表。
- 优点:适用于链表。
树表之二叉排序树。
二叉排序树
二叉排序树满足以下条件:其左树的子节点值均小于该节点,右树的子节点值均大于该节点。
- 性质:中序遍历二叉排序树,得到一个递增有序的序列。
- 最多比较次数为树的深度。
- ALS的长度与树形态有关,从log2(n)到o(n)不等。
插入操作
查找直到某个叶子节点的左子树或者右子树为空为止,然后将该节点插入为该节点的子树。
删除操作
- 若节点为叶子节点,直接删除。
- 若只有一个子树,将子树替换它。
- 若有两个子树,使用左子树中最大的值(或者右子树中最小的值)替换它,然后对那个子节点执行删除操作。
失衡二叉树的调整
一个平衡二叉树,在增加一个节点之后,可能发生失衡,这时候就需要调整节点关系,使二叉树保持平衡。
具体操作不好文字描述,略。