数据结构---C语言基础
程序=算法+数据结构
数据结构是设计OS、DBMS、编译等系统程序和各种应用程序的重要基础。
常见的数据结构有:数组、栈、队列、表、串、树、图和文件等。
数据是什么?
①杂乱的数据不能表达和交流信息
②数据之间是有联系的
③数据之间是有结构的;
④在某种数据的结构上可以定义一组运算
程序设计的基本要素:
数据(Date) :所有能被计算机处理的符号的集合。
数据元素(Data Element) :数据这个集合中的单个个体。
数据项(Data Item) :数据元素常常被分为若干个数据项,数据项是数据具有意义的最小单位。
数据对象(Data Object) :具有相同特性的数据元素的集合。
数据结构(Data Structure) :是带有结构的数据元素的集合。
逻辑结构(Logical Structure) :指数据元素之间的结构关系。
物理结构(Physical Structure) :指数据结构在计算机内存中的表示。
物理结构的存放直接决定了逻辑结构的选择。
什么是算法
算法是一个有限的指令集,遵循指令流可以完成特定的功能。
算法的基本特性:
如何衡量一个正确算法的好坏?
算法与程序的区别
主要区别在:有穷性、正确性和描述方法
程序可以是无穷的,例如OS。
算法是有穷的;程序可以是错误的,算法必须是正确的;
程序是用程序设计语言描述,在机器上可以执行;
算法还可以用框图、自然语言等方式描述。
衡量的三个标准:
运行所花费的时间(算法的时间特性);
所占用存储空间的大小(算法的空间特性);
其他(可读性、易调性、健壮性、可移植性等)
时间和空间特性的巨大改进源于更好的数据结构或算法。
为什么要计算时间复杂度?
设:A1,A2和A3是求解同一问题的不同算法,其时间复杂度分别为:O(n), O(nlogn), O(N!)。
C1和C2为计算机,且C2的计算速度是C1的10倍。
不必追求高效算法,低效算法可由高速计算机来弥补的看法,是错误的。