一、什么是数据结构?
假如要解决这样的一个问题:
要用电脑统计一个班的学生成绩,身高,性别,姓名。
如果用C语言实现,此时会想创一个结构体,用这个结构体的每个成员,来表示身高,分数,性别,姓名。这个结构体,就描述了某一个学生。
而学生之间有什么关系呢?他们只是一个集合,之间没有关系。那此时可以考虑使用线性结构来描述整个班的学生。
所以,数据结构就是:
当要使用计算机来解决问题的时候,需要先使用编程语言把问题涉及到的对象或者元素描述出来(或者说定义出来,或者说表示出来),这个描述,就是数据结构。
数据结构有三种,线性结构,树状结构,图状结构。
而学数据结构要学什么?
就是当要用计算机解决问题的时候,已经判断出了问题涉及的对象和对象之间的关系,此时,用编程语言把这个问题对象描述出来方法,以及对这些对象如何进行一些基本操作,就是要学会和熟练掌握的。
如何抽象问题呢?
基本的抽象方法;
1、把对象抽象成点。
2、把对象之间的关系,抽象成线。
就比如,上面例子中,把学生抽象成了一个结构体成员,每一个成员之间没有关系,或者只是前后关系。所以,把他们一个个串起来,就仿佛是一条线,所以使用线性结构来描述这个问题。
分析出来是线性结构,用编程语言怎么描述,就是学习数据结构的意义。
二、什么是算法
用数据结构把问题涉及的对象,还有对象之间的关系描述出来之后。
针对对象的处理步骤,就是算法。
所以说,程序 = 数据结构 + 算法。
算法要如何评估。
看算法占用的资源,也就是CPU占用率和内存占用。
现在内存价格降低后,内存占用的评估就不是那么重要了,关键是CPU的占用。
也就是看这个算法:
执行了什么操作,做了多少次操作。
也就是 算法有多快。
通常使用O表示法。表示算法的时间复杂度。
如果用大O表示法表示的值相同,则表示算法处于同一个数量级。
算法的特点
1、算法一定要有输入。
2、算法一定要有输出。
3、有限指令。所以一定会停下来。
4、每一步操作要明确。
5、可实现。