前言
所有的程序都是由数据结构和算法两个部分组成的,数据结构是实体,而算法是将他们联系在一起的各种手段。 ——《21天学通C语言》
不管是C语言程序还是其他各种语言程序,数据结构和算法都是程序的基础
数据结构、算法的概念
数据结构
什么是数据结构?
很多地方给出的概念是:数据和他们之间的结构。但是笔者认为,解释成研究有结构的数据的学科更为形象。
数据结构作为程序中的基本使用单位,当作一个整体来使用,数据类型通常有三种。
- 单个数据:单个的不可拆分的数据,比如姓名、CSDN、78、李华等
- 多个数据:比如2024年4月11日16时16分32秒,这显然不能被称为单个数据,而是多个数据的组合
- 单个数据与多个数据的集合:
比如
{
姓名 李华
年龄 20
生日 2004年6月8日
}
花括号内的数据,举个例子可以称之为李华同志的个人信息,其中生日两个字显然是单个数据组成的数据结构,而 2004年6月8日这些时间性的数据显然就是由多个数据组成的数据结构啦。
不知道会不会有读者跟笔者一样是钻牛角尖狂魔,产生了单个数据“李华”不也是由“李”和“华”两个汉字数据构成的,“李”这个字不也是由很多笔画构成的等等抽象的想法,针对于此,笔者做出以下思辨。
- 单个数据和多个数据的区别:单个数据虽然可以拆分,但是拆分之后的性质是与原数据不同的,比如”李华”是一个名字,而“李”和“华”就只是一个汉字,至少可以说与李华本人没啥关系。而多个数据拆开之后性质也往往是相同的,比如2024年4月11日16时16分32秒,拆开来看每一部分都跟原数据一样都是时间。多个数据的集合,可以进行元素的增加、删除、查找、排序等更复杂的操作,而单个数据只能进行简单的个体操作。(此为笔者个人浅薄看法,如有其他见解可以评论区交流)
算法
什么是算法?
算法是求解问题的一系列计算步骤。简单的说就是我们利用编程解决问题的思路。一个好的算法应当具有正确性、可行性、易读性、健壮性、高效率和低储存需求性等等。简要理解就是算法应该是解决问题的,最好是容易理解的,出了问题容易修改的,运行效率高时间短,所占内存少的。