查找分为:1、静态表查找 2、 动态表的查找
静态表的查找有 1) 顺序表的查找 2)有序表的查找 3)索引表的查找
顺序表的查找就是 按照顺序一个一个的与关键字进行比较 平均查找长度 1+2+3+......n
有序表的查找:二分查找 平均查找长度的计算 利用二叉判定树
索引表的查找:表分成b块,每块s个元素 提取每块最大的元素建立索引 索引是有序的 标明最大元素在表中的位置
平均查找长度:索引查找长度+块内元素查找长度 索引的查找采用顺序表或者二分查找 块内元素用顺序表的查找
-------------------------------------------------------------------------------------
动态表的查找:
1) 二叉排序树:
小的在左边,大的在右边 不唯一 根据给定的关键字序列确定 与二分查找过程类似
2)平衡二叉树 :
每个节点的平衡因子 为 0、-1、1 深度为h的平衡二叉树至少有Nh-1 +Nh-2 +1 个节点
一般我们建立二叉排序树的时候都期望建立为AVL树 所以在建立过程中需要动态调整。
----------------------------------------------------------------------------------------------------------------
排序:内部排序
1、插入排序:
直接插入排序:是稳定的,空间复杂度o(1)
折半插入排序:稳定的
希尔排序:不稳定
2、交换排序:
冒泡排序:稳定 快速排序:不稳定
3、选择排序:
简单选择排序 不稳定 堆排序:大根堆 小根堆 先建立堆 然后输出堆顶元素再调整 用最后的元素去替代堆顶元素 从n/2元素开始往前调整。不稳定
4、2路归并 稳定 5、基数排序 稳定