面对即将要参加的考研复试,数据结构是必考科目,希望以下能派上用场
1.算法的时间复杂度:
答:在程序中反复执行的语句的执行次数被称为语句的频度,时间复杂度就是所有语句频度之和的数量级,而所有语句的频度之和与程序最内层循环的频度是同一个数量级,所以算法的时间复杂度是最内层循环的频度的数量级
补充:算法设计的步骤:
1.建立数据模型
2.确定数据结构与算法
3.选用语言
4.调试并运行
2.空间复杂度:
答:程序在运行时所占的空间
直接插入排序的空间复杂度是O(1),递归的空间复杂度是O(n)
3.贪心算法、动态规划和分治算法:
答:贪心算法是指从上到下,每次都求解局部最优解的算法,特点是每次求解最优解,但是最终的结果不一定是最优,经典例子是背包问题。
动态规划是将一个大问题划分成若干个子问题,问题之间存在重叠,从上到下,求解整体最优解,每一次的求解会对下一次的问题造成影响,最终的最优解不一定包含每次的最优解,但是一定有部分最优解。经典例子是求最长子串。
分治算法是将一个大问题划分成若干个和大问题相似的子问题,再对子问题进行递归求解,最终合并得到最后的结果。特点是大问题的划分与子问题相似,并且每个问题之间是相互独立的。经典例子是二路归并排序、快速排序
4.数据的存储结构:
答:
(1)顺序存储:逻辑上相邻的两个元素的物理位置也相邻。
优点:能够随机存取。
缺点:插入删除需要移动大量的元素,不方便。
(2)链式存储:逻辑上相邻的两个元素的物理位置不一定相邻,每个结点用一个指针来找到下一个结点的位置。
优点:插入和删除很方便
缺点:随机读取时不方便,需要从第一个结点开始遍历
(3)索引存储:在存储时,还附加建立索引表,索引表中的每一项称为索引项,索引项的一般形式是(关键字,地址)
优点:检索速度快
缺点:索引表占用存储空间,并且插入和删除一个数据时,对应的索引项也要插入和删除,会耗费较多的时间
(4)哈