对象=数据结构+算法
程序=对象+对象+。。。。
用计算机求解问题一般包含两个步骤:
⑴ 抽象出问题的模型;
⑵ 求该模型的解。
数据(Data):是对客观事物的符号表示,在计算机科学中是指能输入到计算机并被计算机程序处理的符号的总称。
数据一般可分为数值数据、文本数据、图形图像数据和音响数据等。
数据元素(Data Element):是数据的基本单位,也可以称为结点,在计算机程序中通常作为一个整体进行考虑。
数据元素一般由若干数据项(Data Item)组成,数据项是构成数据元素最小的、不可分割的单位。
数据处理(Data Process):对数据进行检索、插入、删除、合并、拆分、排序、统计、计算、转换、输入、输出等的操作过程。
数据结构(Data Structure):
相互之间存在一定关系的数据的集合。
是数据及其元素之间相互关系的表示。
逻辑结构:数据元素之间一般存在某种特定的关系,这种关系称为数据的逻辑结构。
物理结构(存储结构):数据结构在计算机内存中的表示形式。包括数据元素的表示和其关系的表示。
ADT的定义(描述)
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作 1
前置条件:执行此操作前数据所必须的状态
输入:执行此操作所需要的输入
功能:该操作将完成的功能
输出:执行该操作后产生的输出
后置条件:执行该操作后数据的状态
操作 2
……
……
操作 n
endADT
整数的ADT
ADT integer
Data
整数a:
Operation
Constructor
前置条件:整数a不存在
输入:一个整数b
功能:构造一个与输入值相同的整数
输出:无
后置条件:整数a具有输入的值
Set
前置条件:存在一个整数a
输入:一个整数b
功能:修改整数a的值,使之与输入的整数值相同
输出:无
后置条件:整数a的值发生改变
Add
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相加
输出:相加后的结果
后置条件:整数a的值发生改变
Sub
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相减
输出:相减的结果
后置条件:整数a的值发生改变
endADT
算法的性质
- 有穷性:一个算法必须能在执行有穷步之后结束,且每一步都可在有穷时间内完成;
- 确定性:算法中每一条指令必须有确切的含义,不具有二义性。
- 可行性:算法中描述的操作都可通过已经实现的基本运算执行有限次来实现。
- 输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合;
- 输出:一个算法有一个或多个输出,这些输出是同输入具有某种特定关系的量。
顺序搜索
int seqsearch ( int a[ ], int n, int x ) {//在a[0],…,a[n-1]中搜索x
int i = 0;
while ( i < n && a[i] != x )
i++;
if ( i == n )
return -1;
return i;
}
插装 time( ) 的计时程序
double start, stop;
time (&start);
int k = seqsearch (a, n, x);
time (&stop);
double runTime = stop - start;
cout << " " << n << " "
cout runTime << endl;