程序=数据结构+算法
数据结构:
基于C语言来说,C只给出了一些基本的数据类型,如int,char等, 但处理复杂问题时,只用这些基本的数据类型很难设计出高效的算法去解决问题,比如 设计一个学生信息管理系统,一个学生的信息包括 学号,姓名,性别,籍贯,专业,等等,学号是数字,其他的是字符,如果一个一个定义会十分麻烦,但他们都有抽象意义的联系,所以如果能够定义一个包含这些所有信息的数据,那么就会十分方便,所以我们可以用结构体来构造这样一个包含学生所有个人信息的数据。
综上,通俗来说:数据结构就是利用结构体将几个数据联系组合在一起形成的一个整体。
数据结构又分两个方面:
1.逻辑结构 2.存储结构
任何数据本身都没有含义,比如 2000,2000本身只是一个数,但2000年是年份,2000元,是钱,数据所表达的含义是我们从逻辑上赋予的。
逻辑结构:就是从抽象的逻辑关系上描述数据,比如, 在教室里,A和B是一个小组的,他们是一个小组的,这个关系,就是逻辑结构, 但是 他们俩在教室的位置离的很远,他们的位置就属于存储结构,也可以说是物理结构。
逻辑结构分 线性和非线性的,数据之间,逻辑关系是一对一的都是线性结构,一对多的都是非线性结构。
存储结构分 顺序存储结构和链式存储结构 顺序存储结构就是把所有元素依次存放在一片连续的存储空间中,链式存储结构是借助于指针将存储元素的空间串联起来。
算法:
算法的定义是:算法是为了解决某类问题而规定的一个有限长的操作序列。算法需要满足五个特性:有穷性,确定性,可行性,输入,输出。
评价算法优劣的标准: 正确性,可读性,健壮性,高效性。
通俗来说,算法就是解决问题的一种方法。
算法有两个复杂度
时间复杂度:
可以直接理解为,此算法处理问题的快慢,或者处理数据的多少。
假设计算机处理数据的基本操作所用时间都是1,如果对于一个算法来说:输入1000个数据得到正确答案所用时间为1000,即此算法处理了1000个数据或1000次数据,输入n个,则处理n个/次,耗时n,如果另一种算法求解相同的问题,输入1000个数据却只用处理500个数据就能得到正确答案,则第二种算法的效率更高。
如果用符号来表示 则: 如果对于一个算法,输入n个数据,此算法中运算次数最多的语句运算了m次,则时间复杂度为O(m)如果m为常数则规定为O(1).
如:
for(i=0;i<n;i++){x++;s=0;} 循环体内两条语句执行的次数相同都为n,所以时间复杂度为 O(n)
空间复杂度:
简单理解为求解问题所需存储数据的多少。
S(n)=O( f (n) )
一般来说,如果算法执行操作时所需要的存储空间对于输入数据量来说是常数,则该称该算法原地工作,空间复杂度为O(1)

被折叠的 条评论
为什么被折叠?



