打开网易新闻 查看更多图片

在程序员职业生涯中,算法和数据结构是最重要的主题,如果想走进编程世界并赚钱的话。今天,我们将通过最简单的示例了解它们的作用以及在何处使用它们。

一.排序算法

排序是计算机科学中研究最多的概念。目的是按特定顺序排列列表中的各项。尽管每种主要的编程语言都有内置的排序库,但是如果您知道它们是如何工作的,它会派上用场。根据要求,您可能要使用其中任何一种。

1.合并排序

2.快速排序

3.桶排序

4.堆排序

5.计数排序

更重要的是,人们应该知道何时何地使用它们。如在电子商务网站中按价格,受欢迎程度等排序。

二.搜索算法

二进制搜索用于对排序后的数据集执行非常有效的搜索。时间复杂度为O(log 2 N)。目的是将列表中可能包含该项目的部分分成两半,直到将其缩小到一个可能的项目为止。比如:当您在歌曲排序列表中搜索歌曲名称时,它将执行二进制搜索和字符串匹配以快速返回结果。

应用范围举例:

1.用于网络爬网搜索引擎,即爬虫

2.用于人工智能以构建机器人,例如国际象棋机器人

3.在地图上找到两个城市之间的最短路径以及许多其他此类应用程序

三.散列(哈希)

哈希查找是当前最广泛使用的技术,用于通过键或ID查找适当的数据。我们通过其索引访问数据。以前,我们依靠排序+二进制搜索来查找索引,而现在我们使用散列。

数据结构称为哈希映射或哈希表或字典,可有效地将键映射到值。我们可以使用键执行值查找。目的是使用适当的哈希函数执行键->值映射。

四.动态编程

动态编程(DP)是通过将复杂问题分解为更简单的子问题来解决的方法。我们解决子问题,记住它们的结果,并使用它们来迅速解决复杂的问题。

五.平方求幂

假设您要计算2的32次方。通常,我们将迭代32次并找到结果。如果我告诉您可以5次迭代完成该怎么办?

通过平方或二进制求幂来进行求幂是快速计算O(log 2 N)中数字的大正整数幂的通用方法。不仅如此,该方法还用于计算多项式和平方矩阵的幂。

应用举例:RSA加密中最需要计算大数幂。RSA还使用模块化算术以及二进制幂运算。

六.字符串匹配和解析

模式匹配/搜索是计算机科学中最重要的问题之一。关于该主题已经进行了很多研究,但是对于任何程序员,我们只会列举两个基本必要条件。

1.KMP算法(字符串匹配)

Knuth-Morris-Pratt算法用于必须匹配长字符串中的短模式的情况。例如,当我们在文档中按Ctrl + F关键字时,我们将在整个文档中执行模式匹配。

2.正则表达式(字符串解析)

很多时候,我们必须通过解析预定义的限制来验证字符串。它在Web开发中大量用于URL解析和匹配。

七.素测试算法

有确定性和概率性的方法来确定给定数是否为质数。我们将看到确定性和概率性(非确定性)方式。

应用举例:质数最重要的用途是在密码学中。更准确地说,它们用于RSA算法的加密和解密,这是公钥加密系统的第一个实现。另一个用途是哈希表中使用的哈希函数

最后,相较而言,人工智能领域,可能是高校毕业生最好的磨炼场之一,在那里,可以快速提升和扎实你的基础,然后你再去学其它技术,就会容易不少。并且对于判断那些技术的实现原理还会有帮助。