数据结构对编程的重要性有哪些?
一、数据结构对编程的重要性
1. 数据结构编程的灵魂,是朴素的基础
数据结构是编程的灵魂,是朴素的基础,学好它有有助于理解各种上层抽象。
在没有充分学习和理解数据结构与算法的基础上去学习面向对象、设计模式,是无法真正体会这些上层抽象的真正意义的,最终可能会导致学之泛泛,用之泛泛。
在工作中,见识了太多开口设计模式,闭口面向对象的人,在某个具体的问题上,问他为什么要用面向对象,为什么要用这样的设计模式,得到的回答相当空泛,有时候甚至是为了对象而对象,为了设计而设计。这样的人,做出来的设计,往往过度设计,似是而非,导致做出来的东西混乱不堪。
遇到的真正设计高手,还没有一个是对数据结构与算法是不精通的。让他讲为什么这样设计,为什么这样架构,他往往能深入浅出,将面向对象的思想、设计模式的考虑,与基础的数据结构和对应的算法结合起来,贴合问题的实际情况,给出良好的结论。
2. 在编程实践中,数据结构随处可见
有人说在工作中没用到数据结构和算法,这是一种误解。并非让你去实现一个链表才叫使用了链表。这可能与大学里教条的教学有关,一味地讲这些数据结构是怎么编程实现的,一味地讲这些算法是怎么证明的,却忽视了学习这些的主要目的是为了在编程实践中去应用它,而不是去重造轮子再发明一次(当然也有少数在算法领域继续深造作出新贡献的人,这里就排除不讲了)。
见过不少对链表的基本属性都不了解的人,在程序里一味使用数组,内存能开多大就多大;也见过太多根本不知道HASH原理的人,对Hash表随意使用,造成KEY值严重重复、效率极为低下、失去了选用HASH的初衷。
即使不是算法密集型的程序里,哪怕是面向业务的编程工作中,能够适当地应用数据结构,选择恰当的算法,也是能极大地提高程序的开发效率、运行效率和运行稳定性的。更不要说面向业务和工作流的基础平台,本身就含有大量的数据结构与算法理论,想利用好这些平台,没有一个好的底子,那会事倍功半的。
3. 学好数据结构可避免大量的过度设计和资源浪费
J2EE就是优异代表。一个WAS应用,能够承受的并发用户数,竟然只有区区的100!!花费百万元的投资,去买几十个CPU、上百G内存,花费十倍甚至几十倍的代价,却只能提升百分之几十的效率。这还是一个产品级的应用,是一个大型银行核心的数据服务之一。那就更不用提在水平更低的项目组中那些可笑的效率问题了。
这是J2EE、JAVA的错吗?主要原因,还是开发者自身的水平,对算法无知到了极点,对数据结构忽视到了极点。
延伸阅读:
二、数据结构概念
数据结构是计算机存储、组织数据的方式。对于特定的数据结构(比如数组),有些操作效率很高(读某个数组元素),有些操作的效率很低(删除某个数组元素)。程序员的目标是为当前的问题选择优异的数据结构。
数据是程序的核心要素,因此数据结构的价值不言而喻。无论你在写什么程序,你都需要与数据打交道,比如员工工资、股票价格、杂货清单或者电话本。在不同场景下,数据需要以特定的方式存储,我们有不同的数据结构可以满足我们的需求。
以上就是关于数据结构的内容希望对大家有帮助。

猜你喜欢LIKE
相关推荐HOT
更多>>
PMP的价值有哪些?
一、提升个人能力获得PMP认证是项目管理领域的一个重要里程碑,它要求申请人具备一定的项目管理经验和知识体系。通过准备PMP考试,个人需要系统...详情>>
2023-10-17 23:45:13
接口测试有哪些工具?
一、PostmanPostman是一款强大的HTTP请求工具,主要用于接口测试。它可以支持各种类型的HTTP请求,如GET、POST、PUT等,支持多种数据格式如JSON...详情>>
2023-10-17 21:59:16
DNF和Yum的区别,为什么Yum会被DNF取代?
一、DNF和Yum的区别1、包管理工具Yum:Yum是较早出现的包管理工具,它是Red Hat Linux和CentOS等系统默认使用的软件包管理工具。DNF:DNF是Yum...详情>>
2023-10-17 20:39:12
抗锯齿技术FXAA、FSAA与MSAA有什么区别?
一、概念不同FXAA是一种基于像素的抗锯齿技术,它通过对图像进行模糊处理来消除锯齿状边缘。FSAA是一种基于几何的抗锯齿技术,它通过对图像中的...详情>>
2023-10-17 19:03:55