当前位置: 首页 > news >正文

数据结构和算法的区分和学习

尼古拉斯•威茨(Niklaus Wirth)曾说过一个名言:程序 = 数据结构 + 算法(Programs = Algorithm + Data-Structures),这也导致许多编程教程将它们混合起来讲。而实际上它们之间虽然有 “1+1>2” 关系,但属于是相互独立的学科

总结:数据结构用于解决数据存储问题,而算法用于处理和分析数据,它们是完全不同的两类学科

打个比方:数据结构就像去教你如何去摆放书架及书,而算法教你如何更节省时间及空间的找到你想要的书籍。

如何学习数据结构和算法?

数据结构和算法虽然是编程的基础课程,但是比较深奥!建议在熟练掌握一门编程语言后(至少语法部分没问题),再去学习数据结构和算法。由于大学教学的第一门编程语言通常是 C 语言,所以数据结构和算法的大部分教程是用 C 语言写的,我也建议大家用 C 语言来初步学习数据结构和算法,当然其它语言也行!

对于我来说,我喜欢在实践中学习或者说对书面理论知识不太感冒,因此我用印象/感官来学习,比如:能多个感官学习就多个感官,边读边画,边看边听等等。最后再自我运用总结,将知识点体系化、串联化。

触类旁通的学习!

 在学习编程时,总有人因为不自信而打退堂鼓。比如逻辑思维混乱、数学和英语不好等等。我承认数学和外语好对于学习编程语言是加分项,但它们不是必要项(你又不是学习到了顶尖地步了?谈什么必要)

用武侠小说里的江湖话打个比方:数据结构相当于武侠的内力,而算法相当于武侠的武技。

相关文章:

  • Flask蓝图(Blueprint)
  • Pycharm 对容器中的 Python 程序断点远程调试
  • visual basic 6.0软件安装包(永久),适用于Windows各系统附安装教程
  • 旅游业为什么要选择VR全景,VR全景在景区旅游上有哪些应用
  • 路由器基础(二): BGP原理与配置
  • 【计算机组成与设计】Chisel取指和指令译码设计
  • ‘spmatrix‘ has no attribute ‘__div__‘. Did you mean: ‘__dir__‘?
  • lamba stream处理集合
  • 【Midjourney入门教程4】与AI对话,写好prompt的必会方法
  • Spring Boot创建多模块项目
  • kafka-consumer-groups.sh
  • 【黑马程序员】SSM框架——SpringBoot
  • 【电路笔记】-谐波
  • 人工智能领域CCF推荐国际学术刊物最新目录(全)
  • 自动驾驶学习笔记(六)——Apollo安装
  • 2017-08-04 前端日报
  • 77. Combinations
  • Angular6错误 Service: No provider for Renderer2
  • iOS编译提示和导航提示
  • Java编程基础24——递归练习
  • Java基本数据类型之Number
  • Js基础知识(一) - 变量
  • magento 货币换算
  • markdown编辑器简评
  • React系列之 Redux 架构模式
  • ubuntu 下nginx安装 并支持https协议
  • 基于遗传算法的优化问题求解
  • 力扣(LeetCode)21
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 删除表内多余的重复数据
  • 正则与JS中的正则
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​queue --- 一个同步的队列类​
  • #单片机(TB6600驱动42步进电机)
  • $forceUpdate()函数
  • $refs 、$nextTic、动态组件、name的使用
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (学习日记)2024.01.19
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Unity3DUnity3D在android下调试
  • (转)我也是一只IT小小鸟
  • ***原理与防范
  • ./configure、make、make install 命令
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET delegate 委托 、 Event 事件
  • .NET 发展历程
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET命令行(CLI)常用命令
  • @Autowired标签与 @Resource标签 的区别
  • @private @protected @public
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)