算法与数据结构:深入理解

发表时间: 2021-04-11 17:37

哈喽,各位小伙伴,最近我开始了数据结构与算法的复习。数据结构与算法可是非常重要的,说之为程序的灵魂一点也不为过,算法的好坏,影响着一个程序的运行效率,现在也影响着我们生活的方方面面,比如百度地图的导航算法、今日头条、抖音的推荐算法、人脸识别、自动驾驶等等都离不开算法。所以建议每个程序汪,一定要学好、运用算法(涨薪必备哦)。看完文章觉得写得好的话记得点赞、收藏+关注哦!

前言

说算法之前,我们先来看看算法工程师的薪资待遇如何。

3到5年工作经验薪资范围

可以看到一个3至5年工作经验的算法工程师月薪基本上都是25k x 16薪起步,5年可以到达50k以上,大厂则给得更高!为什么?因为算法真的很重要(头条就是靠算法起家),但是相对来说,算法的门槛比较高,需要很强的逻辑思维,所以这方面人才非常缺乏。虽然门槛高,但是作为一个程序汪,基本的算法还是要掌握的。

什么是算法

算法(Algorithm)在数学领域中,是指用来解决某一类问题的公式和思想。

计算机科学领域是一系列的程序指令进行运算逻辑,在计算机中的算法思想离不开数学,可以说是计算机将数学领域的公式和思想转换到了计算机中。

算法有简单的,比如从一堆数中找到最大或最小的数;

算法也有复杂的,比如百度地图中起始位置到目标位置的最短距离、用时最短的算法。

算法有高效的,也有低效的,比如总看到的一个关于高斯计算1+2+3+...+99+100的算法,他用了首尾相加,然后再相乘的算法很快就得到了答案。如果按正常逻辑按部就班地去算,那么耗费的时间可真不少。

计算机领域中,衡量算法的好坏主要看两个指标:时间复杂度和空间复杂度。 简单来说就是开始运算到得到结果所耗费的时间和内存,耗时越短,内存越少的算法就越好。反之就越不好。但是这两者一般是不可兼得的,要么牺牲时间换取更小的内存,要么牺牲内存换取更短的时间,现在内存越来越便宜了,所以一般会选择牺牲内存换取时间。

算法的运用

1.运算

简单的就是常用的数字加减乘除运算,复杂的就是模拟数学中各种公式、函数运算。比如常见的:10000个数,找出所有的质数


2.查找

查找是很常用很常用的、计算机和生活都基本上无时无刻进行着查找。生活中:你去超市买东西,怎么快速地找到你想要买的东西。计算机几乎你看到的所有数据都是通过在数据库中查询出来的,淘宝、京东购物搜索、百度搜索所展示的数据都是查询的应用。查询算法的研究在计算机中极为重要

3.排序

排序是很多复杂算法的基石,应用非常广泛,比如我们购物的时候,我们通常会进行按价格排序、销量排序、人气排序等。对排号序的数据进行查找,那就方便得多了。比如在数组中有10个从小到大排好序的数据。要最大最小的,只需要获取第1个数据和第10个数据就好了,不用再去每个比较了。

排序算法很多,性能和优缺点也有很大的区别。

4.决策

算法影响着我们的决策。通常现实生活中,要完成某件事情或者达到某个目的可能有很多不同的方法,这其中有好的,有不好的,而我们一般倾向于选择最好的,因为最好的能为我们省钱或是省力、或者能给我们带来最大的价值。还是拿导航来说,在我们选择目的地之后,系统会根据各种因素,计算出多种路线,有最短距离,最短耗时,最省钱。如果没有这些策略,我们可能会损失更多的钱或时间。

总结

算法很重要,它能解决很多事情,而好的算法能高效的解决这些事情。计算机领域中,算法是很多推荐类App(如抖音、今日头条)的灵魂,但是好的算法不是那么轻易就能研究出来的,它很考验人的逻辑思维能力,这也是衡量一个程序员思维能力的很好方法。

这一章就先介绍算法是什么,可以干什么,下一期介绍算法的基石——数据结构。它是学好算法必须要掌握的基础。

我是小柒,一个啥都会点的程序汪,关注我,带你们看看我都会点啥。咋们下期见!