为什么数据结构和算法对学习很重要?

为什么数据结构和算法对学习很重要

作者 anuupadhyay

数组、链表、堆栈、队列、搜索、排序、树、图形…
您是否有疑问,如果上述所有复杂的东西在现实生活中完全没有用处,我为什么要研究它们?如果数据结构和算法在日常工作中没有用,为什么公司会问这些问题?

许多初学者和有经验的程序员避免学习数据结构和算法,因为它很复杂,他们认为在现实生活中没有使用上述所有东西。因此,在我们讨论该主题之前,我们将向您抛出一个简单的问题,您需要找到解决方案。

为什么数据结构算法很重要?

如果您需要在 20000 页的 PDF 文档中搜索卷号(卷号按递增顺序排列),您会怎么做?

如果您尝试随机或按顺序搜索它,则需要花费太多时间。一段时间后,您可能会感到沮丧。
您可以尝试下面给出的另一种解决方案…
1.转到第 10000 页
2.如果您的卷号不存在,但该页面中的所有其他卷号都小于您的
3.转到第 15000 页
4.仍然如果你的卷号不存在。但这次所有其他卷号都大于你的。
5.转到第 12500 页
继续相同的过程,在 30-40 秒内您将找到您的卷号。祝贺。。。你只是无意中使用了二叉搜索算法

这只是一个简单的例子,你可能已经明白了为什么你需要学习数据结构和算法,以及它在现实生活中的重要性。在日常生活中可以找到很多例子。因此,如果你认为这种技能只对破解基于产品的公司的面试很重要,那么你就完全错了。

从上面的例子中,我们可以直接给出两个学习数据结构和算法的理由…

如果您想破解面试并进入基于产品的公司
如果你喜欢解决现实世界的复杂问题。

破解顶级产品型公司的采访

知道在引擎盖下,你所有的SQL和Linux命令都是算法和数据结构吗?您可能没有意识到这一点,但这就是软件的工作方式。

数据结构和算法在实施软件和招聘过程中也发挥着重要作用。许多学生和专业人士都有这样的疑问:为什么这些公司的面试侧重于DSA,而不是语言/框架/工具的特定问题?让我们解释一下为什么会发生这种情况…

当你要求某人为某件事做出决定时,好的人将能够告诉你“我选择做X,因为它在这些方面比A,B更好。我本可以和C一起去,但我觉得这是一个更好的选择,因为这个”。在我们的日常生活中,我们总是和那个可以在短时间内高效、使用更少资源完成任务的人一起去。同样的事情也发生在这些公司身上。这些公司面临的问题要困难得多,规模要大得多。在解决这些公司的问题时,软件开发人员还必须做出正确的决定。

了解DS和算法,如哈希,树,图和各种算法,对有效地解决这些问题大有帮助,面试官更感兴趣的是看看候选人如何使用这些工具来解决问题。就像汽车修理工需要正确的工具来修理汽车并使其正常运行一样,程序员需要正确的工具(算法和数据结构)来使软件正常运行。因此,面试官希望找到一个能够应用正确的工具来解决给定问题的候选人。如果您知道一种数据结构与另一种数据结构的特征,您将能够在选择正确的数据结构来解决问题时做出正确的决定。

在谷歌、微软、Facebook、亚马逊等公司工作的工程师与其他公司不同,与其他公司相比,他们的薪水更高…但是为什么?在这些公司中,编码只是实现,大约需要分配给项目的20-30%的时间。大多数时候,使用最佳和最佳算法设计事物,以节省公司的资源(服务器,计算能力等)。这就是为什么这些公司的面试专注于算法的主要原因,因为他们希望能够跳出框框思考的人设计可以为公司节省数千美元的算法。Youtube,Facebook,Twitter,Instagram,GoogleMaps所有这些网站都拥有世界上最多的用户。为了在这些网站上处理更多用户,需要进行更多的优化,这就是基于产品的公司只雇用可以根据用户需求优化软件的候选人的原因。

:假设你在一家Facebook公司工作。你提出了一个问题的最佳解决方案(比如对来自印度的用户列表进行排序),时间复杂度为O(nLogn)而不是O(n2),并假设在现实生活中公司的问题n是1亿(考虑到在Facebook上注册的用户数量超过10亿,这是非常公平的假设)。nLogn将是8亿,而n2将是10^7十亿。在成本方面,您可以看到效率提高了 10^7 倍以上,这可能会在服务器成本和时间方面节省大量资金。
现在您可能已经知道公司希望聘请一位聪明的开发人员,他可以做出正确的决定并节省公司资源、时间和金钱。因此,在给出使用哈希表而不是列表来解决特定问题的解决方案之前,请仔细考虑大规模和所有案例场景。它可以为公司创造收入,也可以公司损失巨额资金。

解决一些现实世界的复杂问题

你有没有因为乱七八糟的房间里找不到书或衣服而被父母责骂过?绝对是的…你的父母给出建议,把所有东西都放在正确的地方,这样下次你可以很容易地得到你的东西,他们是对的。在这里,您需要将所有内容(数据)安排并保存在这样的结构中,以便每当您需要搜索某些内容时,您都可以轻松快速地获得。这个例子清楚地说明了在现实生活中排列或构建数据的重要性。

现在以库为例。如果您需要从图书馆找到一本关于集合论的书,您将首先转到数学部分,然后转到集合论部分。如果这些书不是以这种方式组织起来的,只是随机分布,那么找到一本特定的书将是令人沮丧的。因此,数据结构是指我们在计算机上组织信息的方式。计算机科学家处理并寻找我们可以组织我们拥有的数据的最佳方式,以便可以根据提供的输入更好地处理它。

许多新手程序员都有这样的问题,即我们在日常生活中使用数据结构和算法的所有内容,以及它在解决现实世界的复杂问题中有何用处。我们需要提到的是,无论您是否有兴趣进入顶级科技巨头公司,DSA概念仍然对您的日常生活有很大帮助。你不相信我们吗…让我们考虑一些例子…

**脸书(是的…我们正在谈论您最喜欢的应用程序)。你能想象你在Facebook上的朋友,朋友的朋友,共同的朋友,他们都可以用Graph轻松表示吗?放松一下…坐一会儿,再想一想…您可以应用图表来表示好友在 Facebook 上的连接。
**如果你需要保留一副牌并妥善安排它,你会怎么做?你会随机扔它,或者你会把牌一个地放在另一个上面,从一个合适的牌组。您可以在此处使用堆栈来正确排列卡片。
**如果您需要在字典中搜索单词,您的方法是什么?您是逐页浏览还是打开某个页面,如果未找到单词,则根据当前页面的单词顺序,在打开之前/之后打开一个页面(二叉搜索)。
前两个是为现实世界的问题选择正确的数据结构的一个很好的例子,第三个是为更短的时间内选择正确的算法解决特定问题的很好的例子。

以上所有示例都让您清楚地了解数据组织在我们的日常生活中的重要性。以特定结构排列数据确实有助于节省大量时间,并且更容易操作或使用它们。算法也是如此…我们都希望节省时间、精力和资源。我们都想选择最好的方法来解决我们日常生活中的问题。世界上存在许多问题,使用本机解决方案可能需要数小时或数天才能解决,也可能需要数年时间!你能想象吗!观看此视频:数据结构和算法
的重要性 我们被许多现实世界的复杂问题所包围,没有人能解决。深入观察问题,你可以通过给出以前没有人给出的解决方案来帮助这个世界。

数据结构和算法有助于更深入地理解问题的本质,从而更好地了解世界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值