谈一谈算法与数据结构-及一些忠告

概念

算法:任何一个良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或值的集合作为输出。这是比较概念化的定义,我们来分析一下,算法到底是什么,比如有一个问题:计算1到10所有整数的和,你现在需要解决它,就得一步一步计算先算什么,再算什么,一步一步直到把问题的答案计算出来,那么计算的这个过程就是算法。

数据结构:数据结构是一种存储和组织数据的方式,旨在便于访问和修改。对于数据结构,其实很好理解,我们在使用算法解决问题的时候,肯定要使用数据,但是我们需要一种方式,让数据比较便于操作,那么我们就需要数据结构,它是为了把数据都组织起来,给算法使用。数据结构不是一种就能够适应所有的算法,每一种数据结构都有一定的优势和局限,那么要掌握的就是这样的特性,就能清楚在什么时候使用了。数据结构更多的是为了算法而存在的。
有这么一个公式:程序=数据结构+算法,所以设计程序的工程就是在设计数据结构和算法。

为什么要研究算法呢

我们先假设一个场景,如果所有的计算机存储器都是免费的,统统不要钱,那么我还有什么理由要去研究算法,回家睡觉不香吗?再如果,cpu无限快,是的很快快的那种,那我还研究算法干啥,游戏不香吗?
但是呢,如果是谁,我也不晓得啊。
在这里插入图片描述
所以说存储器和cpu不可能这样子的,那么研究算法的目的就是为了更加高效的去利用有限的计算和存储资源。
关于效率,那么算法真有这么神奇吗?我们来举一个例子,这是算法导论上的一个例子:
有n个数据需要排序
1、插入排序,它的时间大概是 c 1 ⋅ n 2 c_1 \cdot n^2 c1n2,c1是一个不依赖于n的常数;
2、归并排序,它的时间大概是 c 2 ⋅ n l g n c_2 \cdot nlgn c2nlgn,c2也是一个不依赖于n的常数;
这两个函数其实有点数学基础就可以知道,n比较小前者是比后者小的,但是当n越大,后者就越平缓,而前者就是,是的很大很大。
所以算法真的很重要,对于如何判断一个程序员的能力,算法就相当于是内功心法,很厉害的的人必然造诣很高,而初学者内功不可能很容易就练好了。

从实际角度出发

我说说自己找工作的经验吧,无论是大厂还是小公司,几乎清一色都会要求算法数据结构基础,比如google,面试五轮,前四轮几乎都在考算法功底,国内最看重的就是BAT,还有字节跳动的要求也是出了名的,所以想要找到一个好的工作,算法和数据结构真的是必修课,如果这块不行,基本进不了大厂。

而且如果一直写接口,在真的遇到一些实际问题时候,你的想法只会暴力求解,那么性能肯定是极低的,一旦遭到数据量比较大情况,肯定不堪重负,那么公司还要你干嘛,从这点来看,还是要学习算法。

总结

总之呢,我是越来越体会到算法对于程序员的重要性了,我刚开始的想法就是,学这个有啥用,这些公司是不是吃饱了撑的,刁难人嘛!现在想想只是自己的格局太小,没能体会到别人的用意所在,所以开始总是带着排斥的想法,勉强在学,造成学是学了,却没什么自己的体会,很快就会忘记。
好在自己早早体会了,虽然已经错过了校招,但是我相信,只要开始,虽晚不迟,把自己变成一个小白,带着正确的心态和态度,重新开始,一点一点学习。

这段一定要看

如果你是一个大学生,恭喜你,一定要分析分析自己,别再浪费时间,校招真的是最好的机会,以后别人可就要求你起码三年以上的经验了,好好学,过来人的忏悔,一定要听啊,声嘶力竭状,哈哈哈。
如果你像我一样,想要提高自己,找更好的机会,那么就一定要趁早规划好,别像我一样出去碰壁了,才想到要好好学,心里压力真的大,真的很摧残人,保持虚心,努力学习。

我也不知道自己能坚持多久,可能几天又想放弃了,不过,我真的想好好坚持做好这件事,大家一起互相监督,互相学习吧,一起分享自己的学习经验,一起成长进步,别再犹豫,未来后悔,真的很痛苦,共勉。

这篇博客为证,从这里开始,抹掉过去,重新出发,老铁,你不上嘛?点关注不迷路哈!

在这里插入图片描述

愿每一个程序员都能被温柔相待!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值