数据结构与算法难学吗

在头条逼逼赖赖很久了,终于下定决心写一些专业的内容。看了很多程序员35岁遇到的危机,左思右想,大部分是算法与数据结构的核心技能不牢固,终日淹没在业务代码中。那就从这里入手,权做抛砖引玉。

很多人一提到算法与数据结构,会产生天生的恐惧感,很多非计算机专业的人也会有惯性思维就是编程是对数学要求很高的事情,事实上,绝大部分编程工作和数学关系非常小,大部分算法和数据结构也不涉及复杂的数学。

1、什么是算法和数据结构呢?

数据结构与算法难学吗

首先我们先忘掉什么算法、数据结构,来欣赏下吴彦祖的巅峰颜值。

然后我们看下阿祖在做什么?对的,组装手枪。

手枪被拆成了很多零部件,阿祖凭借对手枪的了解,快速的拼合这些零部件,使它最终成为一把具有杀伤性功能的武器。

如果你能理解这个行为,你也就理解了算法和数据结构

N多个零件就是数据结构,他们各不相同

算法就是阿祖拼合手枪的思路,先拼这,再拼那

在算法的指导下,各种数据结构不断组合,最终形成一个具有一定功能的模块。

当然,相同的数据结构,使用的算法不同,结果也不一样。

数据结构与算法难学吗

由这个例子,稍微发散一下,你会发现你的生活小到炒菜做饭、打扫卫生、洗衣服,大到宇宙飞船、粒子对撞全部都可以拆分成算法和数据结构的思维。

总结一下,简单来看,算法就是你做一件事的逻辑,数据结构就是计算机系统中数据存储的一种方式。

2、理论定义一下算法和数据结构

「算法 Algorithm」是在有限时间内解决问题的一组指令或操作步骤。算法具有以下特性:

  • 问题是明确的,需要拥有明确的输入和输出定义。
  • 解具有确定性,即给定相同输入时,输出一定相同。
  • 具有可行性,可在有限步骤、有限时间、有限内存空间下完成。
  • 独立于编程语言,即可用多种语言实现。

数据结构 Data Structure」是在计算机中组织与存储数据的方式。为了提高数据存储和操作性能,数据结构的设计原则有:

  • 空间占用尽可能小,节省计算机内存。
  • 数据操作尽量快,包括数据访问、添加、删除、更新等。
  • 提供简洁的数据表示和逻辑信息,以便算法高效运行。

3、算法和数据结构的关系

数据结构是基石

数据结构为算法提供存储数据的方式和操作数据的方法。对比来想,阿祖要组装枪,他得先知道他装的是手枪,狙击枪还是加特林,不同的枪,组装方法并不一样,不同的数据,也需要用不同的算法

算法是完成特定功能的灵魂

不管是什么枪,这个人必须知道怎么组装,而且他知道的方法越多,他才有可能选到最优的方式,组装的最快。

也就是一旦数据结构确定,算法逻辑最多的人,大概率能最高效的完成最终的功能

算法和数据结构有最优解

当确定算法,指定完成一个功能,一般都可以有多种数据结构去选择,但是不同的数据结构最终效率会相差很大,反之,确定数据结构,用不同的算法,效率也会相差很大。也就是确定了功能后,算法、数据结构存在一个最优解。

就像阿祖想要完成组装枪,如果是比谁最终完成组装,一定是他的算法赢了,但是最后成龙比的是谁的子弹先顶到对方头上,那成龙的算法赢。所以任何算法和数据结构的最优解前提都是先确定功能。

在真正的开发过程中,都是先确定功能,然后我们说的算法其实就是包含了数据结构和算法。

本文【数据结构与算法难学吗】由作者: 主键 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4278.html

(0)
上一篇 2023-03-12 08:17:39
下一篇 2023-03-12 08:25:17

相关推荐

  • 学软件开发多少钱合适_学编程多少钱学费

    众所周知,IT互联网方向的岗位就业比较好而且薪资也高,所以很多人都想往软件开发这个方向走,但学费并不是特别便宜。下面深圳市科创职业技能培训学校的老师们整理了学软件开发的培训学费,希望对你有所帮助! 要说软件工程师培训班的收费标准,从目前的情况来看,并没有一个标准,基本上都是由培训班自己定,不同培训班、不同的时间和时长,学费也有所差异。 而除了一般的培训机构,…

    2023-03-12
    1100
  • pscs5教程画鸡蛋(pscs5抠图教程)

    用PS制作真实可爱鸡蛋效果。 准备工具:Adobe photoshop CS5 。 1.“Ctrl+N”新建一个“800 * 800”像素的文件。 2.使用“圆角矩形工具”画一个圆角矩形,做一个盛放鸡蛋的盘子,将此图层命名为“盘子”。 3.双击“盘子”图层,添加图层样式。 4.添加“斜面和浮雕”,样式为“枕状浮雕”,方法为“雕刻浮雕”,深度、大小、软化根据实…

    2023-03-21
    000
  • css鼠标样式小手_鼠标的小手css

    网站开发简介 网站开发包括前端和后端,后端是服务器,用来存储数据和设计业务逻辑,前端用来展示网站效果。 网站是多个网页的集合,网页是纯文本格式的文件,浏览器就是将这些纯文本格式的文件渲染成网页。 HTML简介 HTML是超文本标记语言(HyperText Markup Language),是一种用于创建网页的标准标记语言,HTML由一个个标签组成,文件的后缀…

    2023-03-09
    700
  • 开机启动项命令是什么

    在日常生活办公中,我们总会时常抱怨电脑启动时的启动项非常令人难受,总是启动一些不需要的软件,而需要开机启动的软件却总也不会进入到开机启动的选项中,那么如何得心应手的对开机启动项进行设置呢?本期内容就将告诉大家,如何在Win10中,将应用程序添加到开机启动项。 注意 建议不要添加过多的应用程序到开机启动项,以免导致电脑开机过慢。特别是在您将硬盘驱动器作为系统磁…

    2023-03-10
    400
  • jquery选择器和css选择器的区别_css和css3的区别是什么

    CSS3在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。 CSS3的现状 浏览器支持程度不够好,有些需要添加私有前缀 移动端支持优于PC端 不断改进中 应用相对广泛 应对的策略:渐进增强 (1)坚持渐进增强的原则:让低版本浏览器能正常访问页面,高版本的浏览器用户体验更好。【重要】 比如说,同样是一个头…

    2023-03-15
    300
  • 如何写好软文发朋友圈(适合发朋友圈的软文)

    我们在朋友圈调查过一些转发率高的文章,很容易发现转发率高、阅读量大的文章越多,往往就有很多共同的要素,甚至选取的案例都很典型。所以,如果你想构思一篇软文的内容,想写一篇转发量上千的软文,一定要看下面这篇文章。 1.主题是积极的 这类文案的主题一旦确定,就必须描述一些已经完成的东西,也有一些具体的流程细节和数据。整个文案一定要有观点总结,最好是脚踏实地。读者看…

    2023-03-15
    200
  • 安卓手机usb调试选项在哪里打开(usb调试不弹出授权)

    有的时候,我们手机需要与电脑连接,进行一些文件的传送,但是经常会出现失败的情况。而这里面大部分的原因都只有一个,那就是手机usb调试没有打开。对于手机系统来说,即使使用数据线来连接其他设备。 1、 iQOO手机USB调试开关处于隐藏状态,点击打开设置图标 2、 找到打开“系统管理”选项 3、 进一步在下拉菜单找到“关于手机”选项并打开 4、 找到并打开“版本…

    2023-03-16
    100
  • hook在编程中是什么意思_flow什么意思

    什么是HOOK技术? 病毒木马为何惨遭杀软拦截? 商业软件为何频遭免费破解? 系统漏洞为何能被补丁修复? 这一切的背后到底是人性的扭曲,还是道德的沦丧,尽请收看今天的专题文章:《什么是HOOK技术?》 上面是开个玩笑,言归正传,今天来聊的话题就是安全领域一个非常重要的技术:HOOK技术。 HOOK,英文意思是“钩子” 在计算机编程中,HOOK是一种「劫持」程…

    2023-03-13
    400
  • c和java都是多线程语言

    引 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消…

    2023-03-12
    400
  • 完全二叉树是什么意思_完全二叉树包括满二叉树吗

    1、定义: 二叉树是计算机数据结构的一种,是树形结构的一个重要类型,它的每个节点最多有左右两个子树。往往二叉树的存储结构和算法都相对较为简单,一般的树形结构也可以转化为二叉树的形式,因此二叉树十分重要。 二叉树的两个子树,是不相交的,分别称为左子树和右子树,以及根节点root。当为空时,又称为空二叉树。 2、二叉树的特殊形态 满二叉树:二叉树上只有度为0的节…

    2023-03-12
    400

发表回复

登录后才能评论
返回顶部
错说博客上线啦!