数据结构与算法

引言:

    本人今年刚毕业,由于大学期间没好好学,基础非常薄弱,所以到现在都没找到工作。只好投应届生或硬着头皮去投实习生,这些天对我打击非常大,连个面试的资格都没有,笔试就被刷掉了。笔试考的都是算法题,每次大脑都是一片空白,回来之后就是当下很忧郁啊。闲得无聊的时候就在心里吐槽,为毛老考算法,不能考我实践能力吗?或面试问问我技术和项目方面的不好吗?这几天没事就在论坛上看大家对待要考算法这一问题的看法,有支持的,有认为没用的。然而,有些奇怪的是,支持的基本都是播客等级较高的大神,这下就要思考了,算法到底有没有用,我到底漏掉了什么?

今天一直在想这个问题,晚上也睡不着,就写一篇关于数据结构与算法方面的博客,跟大家分享一下这几天思考的成果。

数据结构与算法:

我们知道:程序 = 数据结构 + 算法。为什么这么说呢?

数据结构:

假设现在有一个新建的图书馆,引入了很多的书,没人管理它们,大量的书籍都在地上杂乱无章的摆放着,整个图书馆无处落脚,就别说在里面学习了,这么大的空间这不浪费资源吗?想借书去哪找?怎么找?找到天荒地老?既然这样,引进一些书架,将这些书放在书架上,再对这些书架有规律的分布,这就解决了空间浪费的问题,其余的空间可以供同学们在这里学习。那么这时又有问题有来了,怎么找到一本具体的书呢?对书进行分类,将相同种类的书放在同一书架上,在填上细化的标签(这里同学们可以回忆大学图书馆是如何排列的),我们通过找到同一种类型的书籍存放的书架的位置,在通过书名找到具体的书。这下问题就解决了。这里,我们可以认为“图书馆”就是电脑中的磁盘和内存。而有效的利用空间存放和快速的取出书籍就是“数据结构”的作用。无论是书籍、论坛、百度百科都解释数据结构就是“存放”数据的一种方式。但在我学过的所有的数据结构来看,我不认同这一观点,无论是数组、链表、栈、堆、红-黑树、散列表等等。他们都提供了“存放”和“取出”数据的方法。所以在这里,我认为:数据结构是有效的利用空间“存放”和“取出”数据的一种方式(希望这里不要误导大家,我只是把我自己的想法表达出来,尽量理解官方的解释,毕竟人家是权威)。

算法:

算法是解决问题的思路。

假设今天要从北京去纽约,想要尽快的到达,怎么办呢?

有两种交通方式:

第一种方式    m1:坐动车去有港口的城市,在打的去港口,之后坐轮船去纽约。

第二种方式    m2:打的去机场,坐飞机直接飞到纽约。

有两种交通线路(这里就不具体举例了,就用长、短表示吧)

第一种线路    r1:长

第二种线路    r2:短

通过组合,形成了4种去纽约的方式:m1+r1,m1+r2,m2+r1,m2+r2。

我们知道m2+r2这种方式是最优解,m1+r2是最劣解,假设将这种情形搬到程序中,如果不熟悉算法,大量的使用m1+r1,这就会造成大量的系统资源浪费,性能会大打折扣,用户体验感极差,如果我们相出了最优解,系统性能就会大大提高,处理用户请求就会变快。用户体验好了,带来什么,你懂的。

这就是算法的作用,用较少的资源去快速的解决问题,这是一种思路,需要常年累月的积累。

在回来说程序 = 数据结构 + 算法。

我们做每件事情都需要相应的资源和相对应的方法完成,程序也不例外。

写程序的原因就是利用资源去解决问题,如何快速的“存取”资源和如何高效的利用这些资源快速的解决问题,需要我们不断的总结经验和思考。

总结:

大家仔细想一下,计算机的解决思路都和我们现实生活有联系,将写程序当做自己在计算机里指挥。当然,这不是简单就做到的,需要多想,多练。

第一次写博客,表述的有些问题,有不对的地方希望大家指点出来,互相学习、进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值