2021年必备的8种数据结构算法,你了解吗?

发表时间: 2021-01-08 16:51

本篇文章将为大家介绍一下2021年最常用将会是这 8 种数据结构算法,并向大家简单列举该数据结构的具体使用。


1.链表

程序员中一个流行的通用数据结构是链表。现在考虑一下此数据结构在实际应用程序中的用途。

我们所有人的手机上都有音乐播放器,并且上面有歌曲。假设您的清单上有5-6首歌曲。当您为这些歌曲创建播放列表时,它将在链接列表的概念上起作用。这些歌曲一一播放,这是单链接列表的最佳示例之一。歌曲已连接,您可以从第三首歌转到第四首歌,但不能返回(单链列表的行为)。

当您实现双向播放歌曲的功能时,它将遵循双向链接列表的行为。在双向链表中,节点双向连接。因此,在播放列表中,您可以从歌曲3移至歌曲4,也可以从歌曲3移至歌曲2。您将具有上一个和下一个按钮。因此双向导航是可能的。

当您以重复模式播放歌曲时,它遵循循环链接列表的行为。在循环链表中,最后一个节点与第一个节点连接。因此,一旦最后一首歌曲完成,第一首歌曲将再次播放,并且将以循环模式播放,并且永不停止。


2.二进制搜索算法

作为程序员,您可能会知道二进制搜索算法。此算法也称为半间隔搜索,对数搜索或二进制印章。在此算法中,我们在排序数组中搜索目标值。

该算法使搜索过程更加容易,因为您不需要比较数字列表中的每个元素。二进制搜索是在有序数据列表中搜索目标值的快速方法。它使您有能力高效地执行此过程。您可以找到许多二进制搜索算法的示例,例如在字典中搜索单词的含义,但是您知道使用二进制搜索方法的真实应用程序中的任何人吗?

该算法的现实世界场景之一是验证应用程序中的用户凭据。使用二进制搜索,您可以在几秒钟内验证数百万个用户的凭据。

此算法还用于许多编程语言库,例如Java,.NET,C ++ STL等。Python的list.sort()方法使用Timsort,后者(AFAIK)使用二进制搜索来定位元素的位置。二进制搜索还用于99%的3D游戏和应用程序中。


3.合并排序算法

合并排序适用于分而治之技术的概念。我们将列表分为几个子列表,直到子列表不包含单个元素。之后,我们合并这些子列表以获得元素的排序列表。这是对该算法的简单简短介绍,但您知道它在实际应用中的何处使用。

很多人喜欢通过任何电子商务网站进行在线购物。您知道这些电子商务网站使用此算法吗?大多数电子商务网站的“您可能会喜欢”部分。本部分维护所有用户帐户的排列,然后根据您选择的排列中反转次数最少的那个开始,建议他们购买或喜欢的东西。


4.阿姆斯特朗数

程序员中另一个受欢迎的程序是检查该数字是否为Armstrong。在阿姆斯特朗数字中,一个数字的数字总和等于该数字本身。例如,153和371是阿姆斯特朗数。阿姆斯壮(Amstrong)编号主要用于数据安全应用程序中以进行数据加密和解密。

访问IJITEE的链接。提到了无线传感器网络的Armstrong编号。他们使用了基于Armstrong的安全算法,其中使用Armstrong编号生成了128位密钥。它在AES算法中用于数据加密和解密。

5.霍夫曼编码

霍夫曼编码与加密和数据压缩结合使用。它用于无损数据压缩。根据概率,它的实现方式是您无需保留同一事物的多个副本。

霍夫曼编码是使用压缩格式,如GZIP,PKZIP(winzip的,等等),和BZIP2。与互联网之间的所有通信都使用霍夫曼编码。大多数图像文件(例如JPEG和PNG)均经过霍夫曼编码。同样,音乐文件(例如MP3)也经过霍夫曼编码。

霍夫曼代码将定长代码转换为变长代码。使用生成所需压缩率的JPEG和MPEG技术对其进行进一步压缩。


6.动态编程

对于计算机科学专业的学生和程序员而言,另一个最喜欢的主题是动态编程。0-1背包问题,分词问题,最长公共子序列这些问题都是动态编程中最流行和常见的问题。您解决了问题,使用了逻辑能力,但是在现实世界中实际使用该概念的地方……

动态编程在生物信息学,数学和经济学中被广泛使用。生物信息学中的任务,如序列比对,蛋白质折叠,RNA结构预测,和蛋白质-DNA结合使用动态编程。

在数学中,DP用于矩阵乘法,而Rocket技术广泛使用DP。火箭的路径是通过求解许多参数来确定的。使用动态规划可以最佳地解决所有决策问题。

7.图

无论您是在某个地方旅行,出门在外还是试图找到通往特定目的地的路线。您可以在手机的Google Map中使用最好的朋友。您知道Google Map使用Graph数据结构吗?

图形数据结构是非常强大的数据结构。该图不仅可以表示地球,还可以表示整个宇宙。从微小的亚原子粒子到巨大的宇宙,您都可以借助Graph来表示每件事。

使用Google地图时,所有城市和州都像带有距离信息的图形一样连接在一起。从一个城市到达另一个城市有很多方法,但是要找到两个城市之间的最短路径,您需要使用一些算法。Dijkstra的算法是一种非常强大的算法,可以用来找到两个城市之间的最短路径。

为了确定到达目的地的最短路径,Dijkstra的算法可在手机中启用导航系统/ GPS。Uber使用匈牙利算法将每辆车分配给寻找乘车的人。

Facebook还使用图形数据结构来实现新闻提要或关注者。它使用Graph API在其应用程序中实现大多数功能。一切都可以由顶点或节点来表示,例如页面,位置,组,评论,照片,相册,故事,视频,便笺等。每个连接或关系都是Facebook上的优势。Graph API以顶点和边的形式存储数据。


8.Trie数据结构

这是程序员的高级数据结构主题。您了解到它可能是为了工作,您也喜欢根据它解决问题,但是此高级主题在实际应用程序中的用途是什么。它在我们的日常生活中在哪里实现?让我们得出一个有趣的答案……

您每天都在使用手机,还使用其中的滑动功能。您的移动键盘中的这种滑动功能以及在编写文档时自动更正使用Trie数据结构。Trie数据结构将字符值保存在手机中。

网络浏览器历史记录也使用Trie数据结构。您访问过的站点的URL由Trie数据结构组织。当用户键入以前使用的URL的前缀时,浏览器将使用此功能强大的数据结构来完成URL。

写在最后

现在,您是否已经了解到这八种数据结构了呢?这基本都是和我们自身离不开的,每一位程序员在进行项目开发时,也会应用到其中的几种。所以,数据结构与算法,对于我们每一个人,无论是已经是程序员还是在这条路上努力的小伙伴而言,这都是非常重要的。

另外笔者是一名CC++的程序员,如果你想更好地提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

编程学习书籍:


编程学习视频:

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长~