目录
算法:描述求解问题方法的操作步骤集合。也就是解决问题的方法,只不过用c语言来实现。
数据结构:
数据的操作,数据的存储结构,数据的逻辑结构
数据:
人们利用文字符号,数字符号,和其他规定的符号对现实世界的事物及其活动所作的抽象描述
数据元素:
表示一个事物的一组数据
数据项:
构成数据元素的数据成为该数据元素的数据项。
数据项 | 姓名 | 年龄 | 性别 |
1 | Y | 13 | M |
2 | Z | 17 | F |
3 | L | 12 | M |
4 | R | 19 | M |
这个表格里有四个数据元素,就像“1”这个数据元素是由“姓名”,“年龄”,“性别”这些数据项的一组数据构成。
编程就是利用结构体来实现:
struct student{
char name[10];
int age;
char sex[3];
};
抽象数据元素:
没有实际含义的数据元素。
在编程是任何数据元素都要有指定的数据类型,由于抽象数据元素没有实际含义所以,我们采取DataType 表示,而DataType 可通过预先定义“typedef”来实现。
数据的逻辑结构:
数据元素之间的相互联系方式。
线性结构 | 树状结构 | 图结构 |
线性:除了最前面和最后面的,其余每个数据元素都只有一个前驱一个后继
树状:除了根结点,其余元素都是只有一个前驱和零个或多个后继
图:每个数据元素都有零个或多个前驱和后继。
数据元素只有符合线性结构的才称为线性结构,其余都是非线性结构。(这是另一种分类方法)
数据的存储结构(物理结构):
数据元素在计算机中的存储方式
顺序存储结构(利用数组) | 链式存储结构(利用指针) |
顺序:把数据元素存储在一块连续地址空间的内存中,特点:在逻辑上相邻在物理上也相邻。
链式:利用指针把相互直接关联的结点链接起来,特点:在逻辑上相邻在物理上不一定相邻。
数据的操作:一种数据类型数据允许进行的某种操作。
类型:一组值的集合
数据类型:是指一个类型和定义在这个类型上的操作的集合。(值和处理函数的总称)(int类型 不仅表示1,2,3,4,这样的值,还表示+,-,*,/,……这样的操作)
抽象数据类型:一个逻辑概念上的类型和这个类型上的操作(一个数学模型和定义在数学模型上的操作的集合)
算法:
描述求解问题方法的操作步骤集合。也就是解决问题的方法,只不过用c语言来实现。
算法的五个重要:
1.有穷性 2.确定性 3.可行性 4.有输入 5.有输出
算法的设计规则:
1.正确性 2.可读性 3.健壮性
算法的时间复杂度分析采取O(f(n))表示,算法的时间复杂度用T(n)表示。
算法的效率:高时间效率和高空间效率。
时间复杂度:
当T(n)与n无关时,则T(n)=O(1);线性关系时,T(n)=O(n);平方关系时,T(n)=O(n^2);依次类推,O(n^3),O(lbn),O(lgn),O(2^n)等,则f(n)=an^2+bn^3<=cn^3其中a,b,c都为常数,所以T(n)=O(n^3)。
增长率的判断:
常<对数(lb=以2为底数的对数)<线性<线性对数阶<平方阶<立方阶<k次方阶<指数。大概率是这样,可以按上面的类型进行分类判断。