数据结构跟算法是编程能力最能体现的部分。
1.数据结构相当于程序员的工具箱,对于很多程序常见的问题,数据结构都有很多理想的解决方案。
2.通过对算法的训练提高程序质量,码程序的水平。
3.通过编写数据结构提升编码能力。
概念部分:
1.什么叫做数据:
程序里面遇到的数值,字符串,小数,int类型等,文字,图形,图像,声音,我们在计算机中存储的任何东西,都是数据。
2.什么叫做数据元素,数据项:
举例:一个学生记录,学生记录里有学号,性别,姓名,籍贯,出生年月,成绩,等等组成了学生记录。
则这个学生记录,就是我们的数据元素,而学生记录里面的各项内容,就是数据项,数据元素包含数据项。
3.什么叫做数据对象:
(性质相同的)数据元素的集合。
数据对象是数据的子集。
例如:整数,把所有的整数组成的这个集合,可以叫做一个整数的数据对象。所有的整数数据对象就包含了所有的整数。
4.什么叫做数据类型:
以往写的程序中,我们定义的变量的类型,就是数据类型。比如:整数类型,字符串类型,小数类型,字符类型等。
数据结构的4种分类:
(按数据与数据的关系分类型)数据结构主要描述了数据存储的结构。
第一种-集合
下图左一:大圈是集合,里面的小圈都是数据,集合包含着数据,数据与数据间没任何联系。
第二种-线性结构
下图左二:小圈是数据,首尾小圈之间有且仅有一条线串联,表示此结构数据与数据之间有先后顺序关系的。
第三种-树形结构
下图右二:一个根数据,发散出两个子数据,子数据再发散成多个子数据,类似一棵树一样的延伸,所以叫做树形结构。
第四种-图状结构
下图右一:数据与数据间错综复杂形成一个网状的关系,例如游戏里面的各个地图之间可以互相到达,传送点间所储存的数据、位置信息,就形成了一个复杂的图状结构。
图状结构是4个结构里最复杂的。
下面这种太官方了看不懂= =还是看上面我照着写的白话文吧。
什么是算法:
算法就是一个解决办法的步骤,比如解决一个问题,可以选择for循环,或者foreach循环,亦或者嵌套循环。这种解题的思路就是算法。
算法是操作数据的,所以数据结构跟算法是分不开的。
算法和数据结构的关系:
数据结构可以认为是数据在程序中的存储结构,和基本数据操作。例如:删除、移除、添加数据等。
算法可以是认为解决问题的,算法是基于数据结构的。
(算法解决问题,问题当中肯定有数据,那么算法肯定要去操作数据结构去解决问题。所以说算法是基于数据结构的。)
数据结构是问题的核心,是算法的基础。(所以数据结构是最基本的,必须掌握!)
算法的评价标准:
运行时间(Running Time)
占用空间(Storage Space)
一般现在编写程序更注重运行时间越短越好,因为计算机随着技术的提升,程序占用的内存空间基本不会造成太大问题。
其他方面:
正确性(Correctness):能不能计算出正确的结果。
可读性(Readability):让别人读自己写的这个算法时,别人能不能很快的理解其中的思路。
健壮性(Robustness):是否容易出bug,比如:要求用户输入数字,而用户输入了乱七八糟的字符,自己有没有考虑到这些特殊情况而早已备好相应的解决此类问题的程序。程序不容易奔溃,那么就是比较健壮的。