数据结构和算法的一些思考
数据结构和算法一直是编程中不可缺少的话题,但是之前对数据结构和算法也没有仔细思考过,只知道数据结构和算法,程序中会用到,能够提高程序性能。前几天看书,发现了几个概念,加深了我对数据结构和算法的认识,记录一下。
计算机科学
首先,让我们了解一下什么是计算机科学,可能因为名字的原因,大家认为计算科学是研究计算机的,其实并不是这样的。那是做什么的?计算机科学是定义问题,如何解决问题以及得出问题解决方案研究。比如给出一个问题,给出这个问题的解决方案即算法,就是计算机科学的目的。值得注意的是,有的问题没有解决方案,计算机科学需要将这些问题分类出来。
编程
当计算机科学研究出了问题的解决方案,我们就可以通过编程将方案表达出来。那什么是编程?就是将一个过程或者算法用程序语言表达出来,这样计算机就可以执行。编程语言必须提供一些基本的东来完成算法的编写,流程控制语句,数据类型等
数据类型
当我们通过编程来表达算法的时候,有一些基本的东西,比如控制流程和一些数据,而我们要将一个数据表示出来,就需要数据类型,比如整数、字符串
数据结构
我们已经有了数据类型和控制流程了,可以将一个算法通过编程完整的表示出来,但是有时候算法太复杂了,我们使用基本数据类型的时候,需要在细节上花费很多精力来编写如何存储和使用数据,这候我们可以创建一种更加高层次的数据存储和使用方式即数据结构,这样我们编程实现算法时,就可以关注更大的目标,不必关注数据存储的细节了。我们经常用到的数据结构比如队列,堆,树
算法
上面多次提到了算法,那算法究竟是什么?对于一个问题,我们得出答案的过程可以说是算法。
为什么要学习算法和数据结构?
1. 算法和数据结构的第一目的就是提高程序性能
2. 很多框架和底层应用中都用到了算法和数据结构,学好算法和数据结构,我们可以更好地理解底层原理