算法基础和数据结构
算法基础
1.算法的几个特征
有穷性、确定性、输入、输出、可行性
2.算法的复杂性定义
3.递归算法的定义、递归算法的两要素
定义:一种直接或者间接调用自己的算法
两要素:
①终止条件
②每次调用的时候,范围会缩小
4.分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)
分治算法,就是分而治之,将复杂问题分解成简单问题解决
5.动态规划算法的解题框架?动态规划算法的两个要素?备忘录方法?
动态规划和递归类似,但是用备忘录保存中间结果,以免重复计算
两要素:
①保存中间结果
②递归关系式
6.经典动态规划问题(矩阵连乘问题、最长公共子序列问题、0-1背包问题)
7.贪心算法思路,贪心算法的两个要素
8.经典的贪心问题(活动安排问题、背包问题、装载问题、哈夫曼编码、单源最短路径、最小生成树问题)
9.回溯法的思想,回溯法中有哪两种典型的模型
10.经典的回溯算法(n后问题、0-1背包问题、旅行售货商问题)
11.分支限界法思想,有哪两种分支限界法
12.经典的分支限界算法(0-1背包问题、旅行售货商问题)
数据结构
1.数据结构定义
数据元素的集合 + 数据元素之间关系的集合
2.栈的两个应用:括号的匹配和表达式的计算。是怎么应用的?表达式计算用的是哪种表达方式?有什么好处?
3.字符串匹配算法:朴素的匹配算法、KMP算法
4.二叉树的前序、中序、后序递归遍历算法,二叉树前序非递归遍历算法
5.堆,建堆算法,堆的插入和删除算法,堆排序
6.哈希,哈希函数有哪些种,余数的取法,处理冲突的方法,闭散列方法有哪些?
7.二叉搜索树的搜索、插入、删除。时间复杂度
8.二叉平衡树的插入结点的原理,有哪几种旋转方式?分别适用于哪种情况。分析二叉平衡树的时间复杂度
9.红黑树的定义,红黑树的性能分析和与二叉平衡树的比较。
10.图有哪些存储表示
11.链表插入排序,链表归并排序
12.常见的有哪几种排序算法,试比较其时间复杂度,以及是否稳定,及各自使用的情形
13.常用分配排序有哪几种? 基数排序的定义,分类及原理。
14.外部排序的过程。
15.B树、B+树、Trie的概念及用途,添加删除结点的原理。