数据结构分为逻辑结构和物理结构
四大逻辑结构:
集合结构,集合结构中的数据元素除了同属于一个集合外,他们之间没有其他不三不四的关系。
线性结构,线性结构中的数据元素之间是一对一的关系。
树形结构,树形结构中,数据元素之间存在一种一对多的层次关系。
图形结构,图形结构的数据元素是多对多的关系。
数据元素的存储形式:顺序存储和链式存储
顺序存储:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。需要一个指针存放数据元素的地址。这样通过地址可以找到相关联数据的位置。
算法效率的度量方法
事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。
缺陷:必须依据算法事先编制好测试程序,通常需要花费大量时间和精力,完了发觉测试的是糟糕的算法,那就功亏一篑。但不同的测试环境差别一般不大。
事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行估算。经过总结,我们发现一个高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:
算法采用的策略,方案
编译产生的代码质量
问题的输入规模
机器执行指令的速度
由此可见,抛开这些与计算机硬件、软件有关的因素,一个程序的运行时间依赖于算法的好坏和问题的输入规模。(所谓的问题输入规模是指输入量的多少)
看一个例子:
第一种算法:
int i, sum = 0, n = 100; // 执行1次
for( i=1; i <= n; i++ ) // 执行了n+1次
{
sum = sum + i; // 执行n次
}
第二种算法: