数据结构:数据元素之间存在特定的关系
是一种抽象数据类型

数据结构如何影响编程?
解决实际问题时,搞清数据对象及其之间的关系后存入到内存中,让计算机能帮助我们处理,数据是以何种方式存入到内存的,将直接影响我们算法的实现过程。不同的数据结构,不同的算法,带来不同的执行效率!

学数据结构的目的:
1、解决问题的时候,能够选择最适合问题的数据结构(数据元素之间一一对应的关系,主要执行修改操作,元素个数已知,我们可以选择顺序表;又如,对数据对象的操作满足先进后出,利用栈来存储数据元素;又比如,我们的需求是频繁的查找,此时我们可以将数据元素视为线性结构,一个个匹配,也可以利用二叉树在存储数据元素的时候就为我们后续的查找做好铺垫,为了利用高性能的算法而选择二叉树。而高级语言已经为我们实现好这些个现成的轮子,我们可以直接利用,将我们注意力放在业务逻辑的实现而不是相对底层的操作上),此时我们可能仅仅需要了解每一种数据结构的优缺点

引用:
作者:darkhorse pxf
链接:https://www.zhihu.com/question/29587605/answer/44895115
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

个人认为数据结构是编程最重要的基本功没有之一!学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链表or循环链表。学了栈之后,你就知道,很多涉及后入先出的问题,例如函数递归就是个栈模型、Android的屏幕跳转就用到栈,很多类似的东西,你就会第一时间想到:我会用这东西来去写算法实现这个功能。学了队列之后,你就知道,对于先入先出要排队的问题,你就要用到队列,例如多个网络下载任务,我该怎么去调度它们去获得网络资源呢?再例如操作系统的进程(or线程)调度,我该怎么去分配资源(像CPU)给多个任务呢?肯定不能全部一起拥有的,资源只有一个,那就要排队!那么怎么排队呢?用普通的队列?但是对于那些优先级高的线程怎么办?那也太共产主义了吧,这时,你就会想到了优先队列,优先队列怎么实现?用堆,然后你就有疑问了,堆是啥玩意?自己查吧,敲累了。总之好好学数据结构就对了。我觉得数据结构就相当于:我塞牙了,那么就要用到牙签这“数据结构”,当然你用指甲也行,只不过“性能”没那么好;我要拧螺母,肯定用扳手这个“数据结构”,当然你用钳子也行,只不过也没那么好用。学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。以后用的过程中,你会发现这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。而且,你以后还会造出很多其他应用于实际场景的数据结构。。你用这些数据结构去造轮子,不知不觉,你成了又一个轮子哥。

2、别人的轮子无法解决我们当前的问题,自己设计数据结构,这个时候,需要学习数据结构设计过程中思想。这次读书学习的主要方向,学习设计数据结构的思想!

数据结构和算法不可分离的,特定的数据结构着对应特定的算法,他们相辅相成一同提高程序性能!
下面这个例子就想说,为了达到程序高效性从一开始就好好的选择数据存储方式。

什么是数据呢? 你的钥匙, 你的工卡, 你的银行卡, 这些物品都可以看做是数据。 从这个意义上来讲, 数据结构就是这些物品的摆放和存储方式。

   我有个不好的习惯, 喜欢乱摆放东西, 这件事已经被老伴骂过多次。 某天找工卡一直找不到, 浪费大半天时间。 最近又在找某张卡, 到处找, 又找不到。 经过反思, 我发现这些数据(钥匙, 工卡, 银行卡)的结构(放置方式)太糟糕了, 东边一个, 西边一个, 到要找它们的时候, 像个无头苍蝇。其实, 何不想想计算机科学中的数据结构呢? 根据需要, 数据有条理地存放着, 需要访问、取用它们的时候, 自然方便多了。 说白了:数据结构就是: 钥匙、工卡、银行卡等物品的存储摆放方法。 做到井井有条可以方便后续查找和使用。算法就是: 查找、获取、使用上述物品的方法。很多时候, 数据结构定了, 其对应的算法集基本上就定了。 所以, 在编码中, 根据实际需求, 选择合适的数据结构尤为重要。 而在实际生活中, 让自己的物品井井有条, 用起来自然方便而容易, 提高了效率。

作者:stpeace
来源:CSDN
原文:https://blog.csdn.net/stpeace/article/details/47785555
版权声明:本文为博主原创文章,转载请附上博文链接!

为什么要学好数据结构和算法相关推荐

  1. 如何学好数据结构与算法(视频+文字版)

    如何学好数据结构与算法 视频地址:https://www.bilibili.com/video/BV1Jp4y1X72Q/ 文字版: 陈小玉 <趣学数据结构><趣学算法>作者 ...

  2. 数据结构和算法,到底有多重要?

    每年金三银四都是招聘季,今年虽然有疫情影响,但相信也还是有不少人出来面试.我发现很多候选人,聊起架构.框架侃侃而谈,但一写代码,就暴露真实水平.说白了,还是基本功不够扎实. 在我看来,不管你是什么语言 ...

  3. 学习数据结构和算法前瞻

    我并非计算机科班出身,以前只对C.java.Matlab.Python语言有粗略的了解,以前写代码的时候只会考虑功能能实现就行了,并不考虑性能方面的问题,对数据结构与算法从未学习过,更不了解什么时间复 ...

  4. 【数据结构与算法】起始篇

    持续学习&持续更新中- 守破离 [数据结构与算法]起始篇 什么是数据结构和算法 什么是数据结构 什么是算法 为什么要学习数据结构和算法1 为什么要学习数据结构和算法2 为什么要学习数据结构和算 ...

  5. 初识数据结构——“数据结构与算法”

    各位CSDN的uu们你们好呀,今天小雅兰进入一个全新的内容的学习,就是算法和数据结构啦,话不多说,让我们进入数据结构的世界吧 什么是数据结构? 什么是算法? 数据结构和算法的重要性 如何学好数据结构和 ...

  6. 【数据结构与算法】时间复杂度和空间复杂度

    文章目录 前言 数据结构与算法 如何学好数据结构和算法 算法效率 算法的复杂度 时间复杂度 大O的渐进表示法 空间复杂度 常见复杂度对比 OJ练习题 消失的数字 轮转数组 结语 前言 大家好哦,< ...

  7. 怎么学好数据结构?北大计算机博士亲授。

    首先明确一下,为什么要学好数据结构?如果你是一位职场人士,那你肯定知道,工作中要用到数据结构的时候少之又少,所以很少会有职场人特意来学好数据结构.但是据我观察,这依然是有必要的.而且很多公司包括一线的 ...

  8. “数据结构与算法”被阿里大佬讲透了,这份笔记真是神了

    写在前面 现在随着科技时代的迅速发展,数据结构与算法已经被更多企业使用以及被更多的人熟知,这也是目前很有前景的一个领域,但是市面上对于数据结构与算法的学习资料还是相对较少,很多人无从下手,那么该如何学 ...

  9. 数据结构与算法 --- 第一章 绪论

    数据结构与算法 第一章 绪论 1. 作者的话 2. 为什么要学习数据结构与算法 3. 数据结构与算法的作用 4. 数据结构的概念 4.1 名词解读 4.2 什么是数据 4.3 数据结构 4.4 逻辑结 ...

  10. 前端如何准备数据结构和算法

    一.导读 据我了解,前端程序员有相当一部分对"数据结构"和"算法"的基础概念都不是很清晰,这直接导致很多人在看到有关这部分的内容就会望而却步. 实际上,当你了解 ...

最新文章

  1. 结对编程——单元测试
  2. 客户端修改文件服务器密码,客户端服务器登录 密码问题
  3. React-Native中的flexbox布局的使用
  4. docker-compose安装mongodb
  5. 记录webpack使用问题,使用报错“UnhandledPromiseRejectionWarning,file-loader图片过大,无法加载图片,打包html文件报错TypeError
  6. 【python】set集合基础与使用
  7. eclipse设置内存参数 堆内存溢出
  8. APIO2010巡逻(树上带权直径)
  9. 计算机显卡调研,75%以上的人都想换显卡! MC调研报告告诉你吃鸡“帧”香
  10. HTML特效代码汇总
  11. 将图片资源放入 html 文件中
  12. python编程一个正方体的代码_Linux Shell经典面试题之请用shell或Python编写一个正方形(square.sh),接受用户输入的数字...
  13. uniCloud更新APP
  14. 运营︱如何实现用户增长?
  15. linux下的打包命令
  16. 一篇流水账,纪念金庸大侠
  17. 车联网(智能网联汽车)无线电频率规划发布 助力制造强国和网络强国建设
  18. php可以用百度云加速吗,百度云加速免费版CDN使用方法(图文)
  19. 把微信头像保存到本地的两种方式
  20. Gradle 下载依赖失败解决方法

热门文章

  1. JSP入门之表格以及常用表单元素(总结自身编程经验以及多本教科书)
  2. TCP/IP协议讲解
  3. android按钮添加音效,Android中为按钮设置点击音效
  4. 万用表二极管档位点亮发光二极管LED
  5. 香港云服务器选阿里云好还是腾讯云好?
  6. 编程语言难度排名_谷歌排名第一的编程语言,小学生拿来做答题,分分钟钟搞定高难度算法!...
  7. 123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n
  8. 使用outlook及office assitans实现邮件批量发送
  9. ThoughtWorks笔试题汇总
  10. matlab识别不出rep,请教:MATLAB中遗传算法如何处理REP等函数的未识别