algorithm---算法设计,数据结构基本概念-之我的归纳 by whb_咸菜---圣斗士啊斌斌斌斌

算法的定义从广泛上来说,可以说是完成一件事情的方法或步骤。

在计算机的角度说,算法是一组有限的指令集组成的过程。     -- 有限的。

算法有五个特性: 确定性,可行性,有穷性,and 输入,输出!

必须指出的是,算法可以改变我们程序的运行时间,好的算法可以节省我们很多时间,使我们的程序运行起来更行云流水,得心应手。

但是算法不是影响我们程序运行效果的唯一因为,受其他因为影响,比如机器质量,语言,编译程序,程序员的水平,and so on。

我们可以从时间复杂性空间复杂性来评估(estimate)算法的性能,同时我们也应该看到算法的正确性,健壮性,易读性也是其性能的体现。

一般来说我们,我们估计时间采用的是近似估计,如O(n),欧米伽n,等等等等。

我们可以可以通过计算出一个基本运算(又称为元运算)的次数,来计算出时间的数学表达式,并且可以通过取极限来算出时间阶数,即O(n)等。

如log(n2)/n(当n趋于无穷的时候)=0 所以log(n2)=O(n);  如果是无穷则相反,如果得出一个常数,那么具有同样的级别。

链表---链表由有限的节点序列组成。有表头,有前后继关系。

支持操作:插入,删除。 (比数组节省时间,省却数据搬动数据的时间)。

扩展:在链表上加一些限制即可演化成堆栈和队列。

堆栈一种只允许在称为栈顶的一端进行插入和删除运算的链表,也可用数组实现。

支持操作:将元素压入堆栈和从堆栈中弹出元素。

POP(S),将返回并弹出栈顶元素(永久移除)。

图:G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交。它们亦可写成V(G)和E(G)。
E的元素都是二元组,用(x,y)表示,其中x,y∈V。[1]

树:一棵树就是不包含回路的连通无向图。

关键特性:假设T是一棵有n个顶点的树,那么

a) T中任意两点有唯一的路径

b)T恰好有n-1条边

c)在T中假如一条边将产生一个回路

根树:有根的树,至少一个顶点。不能为空树。

二叉树:有根,可能有左右子树。

满二叉树:内部节点(除叶子之外的节点称为内部节点)都有左右两个孩子。

完全二叉树:满二叉树并且叶子拥有相同的深度。

二叉搜索树:v左边的子树内容比v小,右边比v大,一个集合对应的二叉搜索树不是惟一的。

数学关系: 

1.第j层最多有2j个结点。

2.任何有n个顶点的二叉树高度至少是log(n)取下限,最多是n-1。

3.完全二叉树或几乎完全二叉树高度为log(n)取下限。

4.完全二叉树中,叶子树等于内部节点+1

posted @ 2014-04-14 11:30  共同富裕  阅读(231)  评论(0编辑  收藏  举报