一:线性查找法:2:算法和数据结构有什么用?

这篇博客探讨了算法和数据结构在计算机世界的广泛应用,包括数据库、网页解析、操作系统、文件压缩、游戏、图形学和图像学。尽管在日常工作中可能感觉不到它们的存在,但在大厂面试和底层技术开发中,算法和数据结构起着关键作用。
摘要由CSDN通过智能技术生成

说明:

(1)本篇博客的目的就是:解决【学算法和数据结构,到底有没有用】这一疑问;

目录

零:算法和数据结构引文;

一:计算机世界中,很多东西底层都蕴含着很多数据结构和算法的东西;

案例1:数据库;

案例2:网页源代码的解析;

案例3:操作系统; 

案例4:文件压缩;

案例5:游戏;

案例6:图形学;

案例7:图像学;

二:为什么在实际工作中,感觉用不到算法和数据机构?

三:为什么有些公司(尤其是大厂)面试时,会面算法和数据结构?


零:算法和数据结构引文;

(1)比如,遇到一个问题:首先要考虑数据应该怎样存储,这就是数据结构要解决的问题;当我们决定了数据结构之后,后续怎么样操作,采用什么步骤去解决问题,这就是算法要解决的问题。

(2)但,很多时候数据结构和算法是不分家的:当我们在具体设计一个数据结构的时候,数据结构内部的执行逻辑本身就可以看成是一个算法;同时,很多算法本身也要依托于某个具体的数据结构来实现;


一:计算机世界中,很多东西底层都蕴含着很多数据结构和算法的东西;

案例1:数据库;

说明:

(1)我们在学习数据库的时候,花费了大量精力是学习SQL语言;比如通过简单的【select语句】就能查询得到结果;

(2)在这个过程中,我们似乎不用关心数据库底层是如何存储数据的;数据库作为一个工具,已经把这些功能封装好了,我们拿来用就行了;

(3)但是,如果我们去研究数据库内部逻辑是怎样的,就会发现,其中包含了大量的算法和数据结构;

(4)在很旧之前,数据库还不是一个标准化产品时,开发者要想完成一个较大规模的程序时,都需要自己开发一个类似于数据库的数据管理工具;即在当时,开发者必须要掌握算法和数据结构,这样才能自己开发数据存储工具;

那么为什么通过【select * FROM ……】这一个语句,就能实现查找功能嘞?这个语句,本质上就是一个字符串啊。这个字符串作为一个指令发送给计算机的数据库工具后,数据库内部到底做了什么,把这个字符串解析成了一步一步的逻辑,进而从数据库中查找到相应内容嘞? 这就涉及到了【字符串算法】。在计算机中,类似的情况还有很多,比如案例2。

案例2:网页源代码的解析;

说明:

(1)浏览器解析【网页源代码】,经过渲染后得到【一个精美的网页】;

(2)【网页源代码】本质是一个大大的字符串,浏览器会解析这个字符串;其实我们平常【编写的程序】也是一个大大的字符串,IntelliJ IDEA会解析这个字符串;

(3)在这背后,算法和数据结构起到了重要作用;解析字符串中,会涉及大量的字符串算法;

案例3:操作系统; 

说明:

(1)操作系统底层包含着大量的算法和数据结构;

(2)比如:操作系统中的【任务切换】,就涉及到了数据结构中的【优先队列】;操作系统的【内存管理】,涉及到了数据结构的【内存堆、栈】;

……………………………………………………

(3)所以,一般需要学习了【算法和数据结构】后,才能去学习【操作系统】;

(4)计算机的其他内容如【编译原理】、【图形学】、【图像学】等,在学习之前,最好有算法和数据结构的基础;

案例4:文件压缩;

说明:

(1)文件压缩本身就是一个算法;

(2)文件压缩不仅仅是我们熟知的rar压缩包;我们在网络上看到的任何文件(图像、音频、视频、文档),这些文件内部都大量的使用了压缩算法;正是有这些压缩算法,我们才能对这些文件进行压缩,进而方便我们在互联网上传输;(几乎我们打开任意一种类型的文件,都有一个文件压缩和解压的过程,只是我们作为用户感受不到而已) 

案例5:游戏;

说明:

(1)游戏中,很多常见的操作,背后都是一个算法;

(2)比如,游戏中从A点走到B点,就涉及到了寻路算法;人机局中,就涉及到了智能领域了(而在智能领域中,算法和数据结构应用的更多);

案例6:图形学;

说明:

(1)在游戏的场景渲染,电影中特效等中,需要使用到图形学;

(2)图形学主要就是用来解决渲染问题(如何在计算机二位屏幕中,表示各种效果,比如三维效果);

(3)比如,图形学中的场景管理:二维空间使用四叉树,三维空间中使用八叉树;

案例7:图像学;

说明:

(1)比如人脸识别、表情识别、图像识别、自动驾驶,背后都使用了图像学;

(2)图像学中,也应用了大量的算法和数据结构;

可以这样说,我们通过计算机做的几乎所有事情,背后都大量应用了算法和数据结构。


二:为什么在实际工作中,感觉用不到算法和数据机构?

原因:

(1)计算机科学已经发展到了一定的程度,很多常用的工具已经被很好的封装了;我们不需要亲自去实现和设计,我们直接使用现成的工具就行了。

(2)算法和数据结构在业务层面应用的不多,而自己的工作大部分也都是在业务层面的,所以在实际工作中感受不到算法和数据结构;

但是,当脱离业务层面,接触基础层面的内容(比如,改进操作系统的某个模块,编写一个语言编译器,自己实现一个数据库,改善和编写压缩算法,图形渲染,图像识别)时,就会立刻感受到算法和数据结构的重要性。


三:为什么有些公司(尤其是大厂)面试时,会面算法和数据结构?

说明:

(1)很多大厂的产品就是【基础服务产品】;因此,大厂希望职员拥有算法和数据结构的能力;

(2)即使,大厂的某些部门不会从事底层的开发,而是从事应用层的开发;但,由于大厂的用户群十分庞大,一个应用层服务的数据规模也是很大的,很可能现有的解决方案无法解决需求,为此也会涉及到底层内容(比如:开发自己的框架,优化数据库,改编现有编程语言,创建一个编程语言等),而这些底层内容都需要算法和数据结构的支撑;


算法和数据结构决定了技术的上限; 


计算机中,算法和数据结构很重要。但除此之外,操作系统,网络基础,编译原理,组成原理等也是十分重要的。而,算法和数据结构是其他内容的前提和基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值