赞
踩
数据项是组成数据元素的,有独立含义的,不可分割的最小单位。数据元素是数据的基本单位。数据结构是带结构的数据元素的集合。数据结构包括逻辑结构和存储结构两个层次。
数据结构的三要素是逻辑结构,存储结构和数据的运算。
逻辑结构包括集合结构、线性结构、树结构和图结构。
存储结构包括顺序存储结构、链式存储结构、索引存储结构、散列存储结构。
顺序存储结构是逻辑上相邻的元素在物理位置上也是相邻的。链式存储结构是在逻辑上相邻的元素物理位置不一定相邻。索引存储结构是在存储元素信息的同时建立附加的索引表,索引表包括关键字和地址。散列存结构是根据元素的关键字,可以直接计算出元素的存储地址。
算法的5个重要特性:有穷性,确定性,可行性,输入0个或多个,输出一个或多个。大O是所有语句频度之和的数量级。算法时间复杂度不仅依赖于问题的规模,也取决于待输入数据的性质。
算法的时间复杂度取决于问题的规模和待处理数据的初始状态。
单链表的结点包括两个域:一个是数据域,一个是指针域。
链表增加头结点的作用:便于首元结点的处理;便于空表和非空表的统一处理。
顺序表和链表的比较:
一个递归算法必须包括终止条件和递归部分。
字符串是由0个或多个字符组成的有限序列。字符串的数据元素是单个字符。
二叉树的性质:
- 在二叉树的第i层上至多有 2 i − 1 2^{i-1} 2i−1个结点,i≥1。
- 深度为k的二叉树,至多有 2 k − 1 2^k-1 2k−1个结点 k≥1。
- 对任何一颗二叉树T,如果其终端结点数为 n 0 n_0 n0,度为2的结点数为 n 2 n_2 n2,则 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1。
- 具有n个结点的完全二叉树的深度为 ┗ l o g 2 n + 1 ┚ ┗log_2n+1┚ ┗log2n+1┚。
- 如果将一棵有n个结点的完全二叉树自顶向下,同一层自左向右连续给结点编号1,2,3,......,n,然后按此结点编号将树中各结点顺序的存放于一个一维数组,并简称编号为i的结点为结点i( i>=1 && i<=n),则有以下关系:
(1)若 i= 1,则结点i为根,无父结点;若 i> 1,则结点 i 的父结点为结点int_DOWN(i / 2);
(2)若 2*i <= n,则结点 i 的左子女为结点 2*i;
(3)若2*i<=n,则结点i的右子女为结点2*i+1;
(4)若结点编号i为奇数,且i!=1,它处于右兄弟位置,则它的左兄弟为结点i-1;
(5)若结点编号i为偶数,且i!=n,它处于左兄弟位置,则它的右兄弟为结点i+1;
(6)结点i所在的层次为 int_DOWN(log(2,i))+1。
23. 使用循环比递归的效率高吗?
不一定,因为递归的优点是代码简洁清晰,容易检查正确性;缺点是当递归调用的次数较多时,要增加额外的堆栈处理,有可能产生堆栈溢出的情况,对执行效率有一定的影响。循环的优点是结构简单速度快,缺点是它不能解决全部的问题,有些问题适合用递归来处理,而不适合用循环。
递归可以理解为递推和回归,相当于一个树结构,其过程相当于是树的深度优先遍历。迭代是一个环结构。
贪心算法是求解局部最优解,自顶向下,得到的最后结果不能保证是全局最优解;
动态规划是分解将原问题分解为若干个项重叠的子问题,然后通过解决子问题来得到原问题的解;
分治法分为分解、解决、合并,就是将原问题分解为若干个规模较小的与原问题结构相似的,互不相关的子问题。然后递归地求解子问题,合并这些子问题的解得到原问题的解。
如果出现的是左括号,则进栈。如果出现的是右括号,则检查栈是否为空,若为空则表示右括号多余,或不为空,则检查栈顶元素是否为左括号,如果是则表明匹配,如果不是,则表明不匹配。表达式检验结束时,若栈为空,匹配正确,否则表明左括号有余。
顺序扫描表达式的每一项,如果是操作数则入栈,如果是操作符则出连续出栈顶两个操作数,并进行运算,将结果重新加入栈中。当表达式的所有操作数都处理完成后,则栈顶存放的是表达式的计算结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。