哈希:
- 采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,而是加一个删除标记
- 散列表的平均查找长度依赖于散列表的装填因子a,a=数据数/表长
- Hash适合内存中的查找
查找:
- 折半查找的本质为二叉排序树,即左子树上<=根节点<=右子树,将折半查找序列第一个元素设置为根,依次排列进树进行判断是否满足二叉排序树;查找不成功的次数不超过树的深度,即[log2n]+1,[]向下取整
排序:
- 插入排序是从后向前比较
递归:
复杂度:
排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
冒泡排序 | O(n2) | O(n) | O(n2) | O(1) | 稳定 |
选择排序 | O(n2) | O(n2) | O(n2) | O(1) | 不稳定 |
插入排序 | O(n2) | O(n) | O(n2) | O(1) | 稳定 |
希尔排序 | O(nlogn) | O(nlog2n) | O(nlog2n) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n2) | O(logn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(k) | 稳定 |
桶排序 | O(n+k) | O(n+k) | O(n2) | O(n+k) | 稳定 |
基数排序 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 稳定 |
查找算法 | 时间复杂度 |
顺序查找 | O(N) |
分块查找 | O(logN+N/m); |
折半查找 | O(logN) |
哈希查找 | O(1) |
平衡二叉查找树AVL查找 | logN |
红黑树r-b tree查找 | logN |
DFS/BFS邻接表图 | O(n+e) |
DFS/BFS邻接矩阵图 | O(n*n) |
KMP 算法 | O(N+M) |