有问有答 | 算法和数据结构精华问答

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=png

所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只有找到了一个组织数据的最佳方式,算法的运用才会事半功倍。


640?wx_fmt=gif1

Q:很多时候的研究内容是算法改进,请问算法改进常见的切入点是什么呢?怎么着手进行算法改进呢?如何判断算法改进是否成功?


A:算法改进最重要的是要找到原算法的瓶颈所在,然后做针对性的改进。计算机科学家安德鲁艾派尔改进优化程序性能的例子属于是程序性能调优上的经典案例,可以发现其中数据结构和算法的调整起到了至关重要的作用。改进(算法采用的)数据结构本身也是改进算法的一种形式。最终,可以用新算法同原算法做对比试验来证明新方法更厉害。安德鲁的试验中,他把原来需要计算1年的程序改到了只用1天!1年VS1天,效果是显而易见的。


640?wx_fmt=gif2

Q:假设遇到一个现实问题,怎样选择合适的数据结构和算法?是不是现实世界的所有问题的解决方法都已经存在相应的数据结构和算法了?


A:因为算法和数据结构是相辅相成的关系,二者无法相互脱离而单独存在。所以所谓面对一个现实问题如何选择数据结构,就可以变成,面对一个现实问题如何设计一个算法。当针对问题解决而设计出算法之后,数据结构就自然而然的蕴含在算法之中了(因为相应的结构将是你算法所必须的)。此外,现实世界的所有问题的解决方法都已经存在相应的数据结构和算法了,答案是否定的。仍然还是有很多问题,可能也有相应的结构来支持算法,但是人们仍然在寻求更高效的结构,而且这个过程从未停止。一个典型的例子就是多维数据访问(Multi-dimensional data access)问题中的高级数据结构问题。


640?wx_fmt=gif3

Q:算法与数据结构有什么关系?


A:计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:信息的表示,信息的处理。而信息的表示和组织又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。众所周知,计算机的程序是对信息进行加工处理。在大多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重要的结构关系,这就是数据结构的内容。数据的结构,直接影响算法的选择和效率。计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。


640?wx_fmt=gif4

Q:为什么要有数据结构?


A:因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的二进制字节数组中。然后让CPU这个只会执行预先保存好的加减乘除移位条件转移等机器指令的家伙按照人的意志去处理这些数据。至于具体如何处理就是所谓算法。


640?wx_fmt=gif5

Q:如何学好算法和数据结构?


A:想象一下你有一条非常非常长的纸条。这张纸条只能写一行字。现在要你把一些描述现实世界的东西写在这张纸条上。然后把这张纸条给别人。别人通过这张纸条重构你所描述的世界,或者在里面查找、推演出自己所需要的信息。

1.这张纸条就是信息的载体,包括硬盘、内存、磁盘、甚至磁带...说白了他们都是一张转着圈或者拐着弯的纸条。

2.给别人的过程就是读写硬盘过程、网络传输过程等等......

3.数据结构所解决的问题就是,怎么用一行字啰里八嗦的把这些东西描述出来,别人怎么读懂这些啰里吧嗦的东西

4.编程,就是怎么解决3,怎么解决3之后解决重构出来的世界的一些具体问题...

简单的说,只要把你的世界观从三维转到一维,你就能学懂数据结构了,结构是人为的规则,书里讲的数据结构,是数据组织最基本的规则。还有各种各样的数据标准,文件格式,只不过是更高级别的数据组织规则。


----------------    --------------



1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。



推荐阅读

  • 云计算到底是怎么玩的?

  • 企业云存储建设之路

  • AI in 美团:吃喝玩乐背后的黑科技

  • 开除“野狗”式程序员,团队的效率提高了

  • Windows 成“弃子”,Linux 终上位?

  • 可替代Android的6大开源移动操作系统

  • 程序员求助:被领导强行要求写Bug该怎么办?网友的回答让我笑翻


640?wx_fmt=gif点击“阅读原文”,打开 CSDN App 阅读更贴心!


640?wx_fmt=png喜欢就点击“好看”吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugkuCTF-MISC题一切有为法如梦幻泡影

下载文件 从Zero.png里foremost分离出一个压缩包,解压得到问.png 没有得到 《察》.zip 密码的提示,所以爆破得到密码42,解压得到这两个文件 先分析one.png,foremost分离出压缩包,解压得到感.png,同样也没…

细数阿里达摩院2019年的十个Flag

戳蓝字“CSDN云计算”关注我们哦!来自:人工智能与大数据作者:AI小哥1月2日,阿里达摩院发布《2019十大科技趋势》,在未来的一年,科技领域究竟会再次迎来春天,还是继续在寒冬中前行,达…

BugkuCTF-MISC题隐写

隐写: TeakPNG打开图片 在010editor里修改CRC 打开图片发现没有flag 在TeakPNG将420改为500,弹出flag

云头条 |华为发布鲲鹏920;高通新推智能座舱芯片;Github重磅更新

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,偶是“CSDN 云计算”微信公众号新晋成员一枚“头条君”。第一次和大家见面,先做个自我介绍吧,头条君带来的【云头条】特别栏目,会在未来的日子里,无论…

BugkuCTF-MISC题隐写2

下载文件welcome.jpg 通过binwalk分离出文件,_welcome.jpg.extracted文件夹 爆破压缩包,得到解压密码为871 通过010editor打开解压图片,得到base64编码 解码即可

C语言 二维数组行数和列数计算 - C语言零基础入门教程

目录 一.计算一维数组长度二.计算二维数组长度 1.二维数组行数2.二维数组列数3.二维数组的元素个数 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算一维数组长度 在前面很多文章都介绍了关于普通数组计算…

Istio调用链埋点原理剖析—是否真的“零修改”分享实录

戳蓝字“CSDN云计算”关注我们哦!来自:容器魔方作者: idouba本文整理自华为Cloud BU技术专家在K8S技术社上关于Istio调用链的分享。前言大家好,我是idouba,来自华为Cloud BU,当前在做Istio服务网格在华为云…

C语言 二维数组遍历 - C语言零基础入门教程

目录 一.计算一维数组长度二.计算二维数组长度 1.二维数组行数2.二维数组列数3.二维数组的元素个数 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算一维数组长度 对于 type array[A]形式的数组&#xff…

有问有答 | 你真的理解微服务架构吗?

戳蓝字“CSDN云计算”关注我们哦!过去几年来,“微服务架构”这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。近几年微服务吵的也比较火,那么为什么微服务会受到这么多的关注?今天&a…

BugkuCTF-MISC题有黑白棋的棋盘

下载了三个加密的zip压缩文件 其里一个名为4easynum.zip,很明显提示密码是四位数,爆破得到7760 打开得到一个图片和文本: 图片解出来是棋盘的压缩包密码 棋盘是flag的密码 题目描述也提示了,这个是古精灵语密码 对照得到棋盘的压…

有问有答 | AWS使用精华问答,带您开启 AWS 上的云计算之旅!

戳蓝字“CSDN云计算”关注我们哦!AWS作为业界领先的云服务提供商,提供多种多样的高可靠性服务。那么究竟该如何使用AWS呢?今天的有问有答栏目,将带您开启 AWS 上的云计算之旅!1Q:请问RDS相较自建MySQL on E…

异常之详解

定义:软件运行过程中,遇到输入不符合要求,程序打不开文件(文件可能不存在或格式不对),空指针,内存或硬盘满了,网络连接失败,非法参数等等这些异常问题,称为异…

C语言 指针 p++ / p-- - C语言零基础入门教程

目录 一.变量 i/i–二.指针 p/p– 1.通过下标访问数组元素2.通过指针偏移访问数组元素 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.变量 i/i– 在前面的文章 自加自减运算符( i /i ) 中介绍了关于变量自增和自减的运算,举个…

BugkuCTF-MISC题又一张图片,还单纯吗

下载文件得到一张图片file.jpg 以010editor打开图片没有flag 以binwalk: 发现没有分离成功 以foremost: 生成file文件夹 得到flag

要闻君说:5G手机真的来了?TCL转型科技企业!鹅厂云部门发布态势报告, DDoS攻击正式进入Tb时代!天上“跑”起出租车?...

关注并标星星CSDN云计算每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 图片来自腾讯《一线》岁末年初,真是一波“内部调整热”。要闻君得知,联想集团执行副总裁兼中国区总裁刘军选择在晚上发布了一封内部邮件,至此中国…

C语言 使用指针遍历数组 - C语言零基础入门教程

目录 一.使用数组下标遍历数组 1.计算数组元素个数2.通过下标遍历数组 二.使用数组首地址偏移遍历数组三.使用指针遍历数组四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.使用数组下标遍历数组 数组中的每个元素都有一个序号,这…

2018,这一年的腾讯优图,我们总结一下!

戳蓝字“CSDN云计算”关注我们哦!2018,腾讯年满20,恰逢弱冠;2018,巨头持续布局AI,可谓“落地生花”的一年。毋庸置疑,腾讯也“玩”AI,最具代表性的,就是“玩出”了三大实…

BugkuCTF-MISC题只有黑棋的棋盘(writeup)

手动分离压缩包注意:zip压缩包文件头格式为504B0304,之间包含504B0102,文件以504B0506****结尾,注意这类格式。 解题流程 题目是1个压缩包,还有提示:动手修复。 1.先把压缩包解压,得到图片和…

js之讲解

1.啥时js 脚本语言 2.基本使用及HelloWorld <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- js代码&#xff0c;也可以放入body中--> <!-- <script>…

C语言 指针和数组区别 - C语言零基础入门教程

目录 一.前言二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值b.数组赋值 3.指针是指针变量&#xff0c;数组是指针常量 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 …