HEAD% \. R. ~! X3 B( {
, k0 p" e2 n8 [8 ^, |2 K
在二叉树的第K层上最多有2的K-1次方个结点! a( s+ X( P, l3 |9 M( d
深度为M的二叉树最多有2的M次方-1个结点
3 W. c* o: q" P5 |1 v/ W具有N个结点的二叉树,其深度至少为[log2N]+1,其中对数部分取整数" F4 N+ z6 `0 X% e; {$ O X
满二叉树与完全二叉树
/ L3 t! E+ t$ G2 k! A. A' ~! x8 f二叉树的遍历;前序,中序,后序遍历
! i! q( T6 R! X& P6 O, f. D遍历方法:可先按要求逐个遍历个子树,然后进行排序
6 {0 O6 h: L8 j, w! K+ d顺序查找最坏需比较N次
; \: f2 X+ O6 W% m' U二分法查找最坏需比较log2N次
! ~) R" E, o2 _: Q% J冒泡排序法最坏需比较N(N-1)/2次$ x9 b3 u/ p4 Y2 o! N: D( V
简单插入排序法最坏需比较N(N-1)/2次& x4 x- K8 n0 K# t5 E$ r
希尔排序法最坏需比较O(N的1.5次方)次
/ a; H# Y7 K1 g$ l+ r4 l3 z简单选择排序法最坏需比较N(N-1)/2次
4 j1 t$ r# M& |4 Y @5 {9 a8 _* `堆排序法最坏需比较O(Nlog2N)次
9 g( I6 ^6 F: Q/ m二 程序设计基础
, D# R! Z9 z- j) l/ y' j程序设计方法主要经过了结构化程序设计和面向对象的程序设计阶段& m* K5 X" b' O7 o# j- J: Y
注释分为序言性注释和功能性注释$ t0 Q% Q; l; a7 E
+ x- D# t R% R1 T: [
结 程序的质量与GOTO语句的数量成反比
+ N# q& P" v9 ^6 W& Z; p0 [0 m/ p# R/ L 构 2 E- l" |. D, ~$ G0 @" q ^
程 顺序结构 & M/ T7 L" w, [9 @( \
化 三种基本结构 选择结构 当型循环结构----先判断后执行3 h7 [' v0 l% E- p7 O
序 重复结构(循环结构)2 V2 C/ j" E* N/ J% S
设 直到型循环结构----先执行后判断
0 z6 R3 |; k2 A4 R: i, j 计
: L+ O, s: m- L1 H: ]# W选用的控制结构只准许有一个入口和一个出口 + G/ W" |0 U; U
, e0 u+ S6 @0 C) I8 H) A% ^" G
面向对象的方法和技术以对象(类)为核心0 `9 X$ l' Z7 z0 _9 H9 n
面 1 创建该类的实例,从而直接使用
5 H( B( k1 e7 S, {向
; Z8 m% Z. P5 ]: _4 }& N& Q2 `! \对 两种方法可以重复是用一个对象类 2 从它派生出一个满足当前需要的新类
+ y' J) [7 F' Q象 对象的基本特点:标识惟一性、分类性、多态性、封装性,模块独立性好( ~6 y% l. W* v' F1 C, M# M
的 对象是类的实例,消息是实例之间传递的信息
9 u ^! h5 V* V3 x+ W程 消息构成:接收消息的对象的名称,消息名,零个或多个参数, C3 M/ b8 W4 \/ T. `3 c) d% o
序 (例如:MyCircle.show(GREEN)) MyCircle是接收对象名称show是消息名GREEN是参数, e! |7 t t8 X2 g# ~
设计 继承具有传递性,继承分单继承和多重继承
0 k [/ E. H; o7 c/ F三 软件工程基础
2 V3 j: N0 N) X9 k3 \, d计算机软件是包括程序,数据及相关文档的完整集合8 W, s* n* ?2 @. e8 b7 R
计算机软件定义:与计算机系统的操作相关的计算机程序,规程,规则以及可能有的文件文档及数据
3 I8 X- o* x2 `5 t软件按功能可以分为;应用软件,系统软件,支撑软件(工具软件)
1 F# c% Z: n5 Y2 o软件工程的三个要素:方法,工具,过程, m& `4 M0 K# f& f
软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程
5 k! ~ W% }3 s: ^. M K; i软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件技术管理* c3 |. E; p$ f6 f, e# t
软件工程的原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性1 U& l% ~& Q( e: h$ U
软件开发环境是全面支持软件开发全过程的软件工具集合
+ J' Z1 G5 t& E) z0 o/ i结构化分析方法:
2 E+ P4 _; J, N: R软件开发方法包括:分析方法,设计方法,程序设计方法2 E l/ D% M0 F, Y
需求分析将创建所需的数据模型,功能模型,控制模型
. z( P% f$ E$ w( G j" K需求分析阶段的工作:需求获取,需求分析,编写需求规格说明书,需求评审* P3 K7 [0 A+ o3 w5 g
需求分析方法:结构化分析方法(包括面向数据流的结构化分析方法、面向数据结构的Jackson方法、面向数据结构的结构化数据系统开发方法),面向对象的分析方法
$ r! m; b! M3 q4 Q6 S. }; `8 d8 d" w结构化方法包括;结构化分析方法,结构化设计方法,结构化编程方法 ]( O* Z; O; [$ @0 Y$ F7 F, D
结构化分析方法常用工具:数据流图(图符:加工,数据流,存储文件,源或潭),数据字典,判定树,判定表
& N2 H$ m4 W$ e* T数据字典是结构化分析方法的核心
8 m Y; e1 l" I1 A数据字典的作用是对DFD中出现的被命名的图形元素的确切解释& b# |' h: t" L5 G, i. h6 }
判定表或判定树是以图形的形式描述数据流图的加工逻辑# \3 c& ]1 C' T& |
结构化设计方法:
" w, {% o$ a# Q% }$ h; x3 X5 v- V$ ?; w5 O•软件设计是确定系统的物理模型
+ h3 P# \5 Y8 f+ V) O" B•软件设计包括软件结构设计,数据设计,接口设计,过程设计
7 G& A3 t- G K" d. V8 o•软件设计分两步:概要设计和详细设计% v6 N( y* B- j
•衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准0 ]* q' V7 a4 ~; g# B2 z* t4 L
•内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量1 p' C' |3 U/ Q% j9 \. I
•耦合性是模块间相互连接的紧密程度的度量$ O" G" @& U6 D. ]; ~. m5 n x: {. J
1.概要设计
9 k% m0 I4 K9 J2 j* Q k•常用的软件结构设计工具是结构图(图符:一般模块,数据信息,控制信息)' C ^4 Z5 U; ~7 q
•经常使用的结构图有四种模块类型:传入模块,传出模块,变换模块,协调模块2 G; z! l% m) x7 d4 u& l
•数据流类型:变换型,事务型% N) I0 ]5 @& u7 d- U4 {
•变换型系统结构图由输入,中心变换,输出三部分组成 |