美文网首页
数据结构与算法-学习之路-开篇

数据结构与算法-学习之路-开篇

作者: Shawn_Shawn | 来源:发表于2020-09-27 01:01 被阅读0次

    什么是数据结构?什么是算法?

    我们经常听说程序=数据结构+算法,虽说平常的工作中很少用到什么算法去解决什么问题,所以会有童鞋觉得算法和数据结构跟我们这些CRUD Boy距离有点远,实际上,我们日常的编程都是与数据结构和算法息息相关的。比如,执行下面的代码:

    int i = 1;
    i ++;
    System.out.print(i);
    

    这就是一个很简单的代码,从小的方面来看待,我们可以把i看成是一个数据结构,用这样一个数据结构来存储数据1i++就是一个算法,用这个算法来操作数据。实际上,这样也就解释了数据结构,算法的作用是啥。

    • 数据结构就是指一组数据的存储结构,而算法,就是用来操作数据的方法。

    • 数据结构是为了算法服务的,算法要作用在特定的数据结构之上。举几个栗子,如

      (1). 二分查找算法,需要的数据结构是有序的数据,如果是链表,二分查找就不work了。

      (2). 广度优先搜素算法,需要的数据结构是队列

      (3). 深度优先搜索算法,需要的数据结构是栈

    • 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题。

    为什么要学习数据结构与算法?

    1. 面试

      国内外的大厂,比如BAT,几乎都会面试数据结构与算法。

      校招的时候,参加面试的都是刚毕业的学生,没啥实际的项目经验,基本也都是学校的课程设计,毕业设计,所以就只能考察他们基础知识,科班出身的,数据结构与算法一定是必修课。

      社招的时候,这些国内外大厂还是会注重考察数据结构与算法这类的基本知识。

      如果面试的是算法工程师,那工资是真的高,不是一般的高!!!

    2. 可以更好的理解一些中间件,框架的底层原理

      比如,redis的五种数据类型,里面有个有序集合为什么要用跳表来实现,而不用链表,二叉树来实现呢?

      比如,Mysql中的B+ tree索引,为什么能提高查询效率。

    3. 可以提升自己的逻辑思维能力,写出性能更优的代码

      数据结构与算法这玩意儿,确实有点绕,你把这么难的玩意儿弄懂了,就证明你的逻辑思维能力没问题,这也是为啥大厂喜欢问数据结构与算法的其中一个原因,考察逻辑思维。

      比如实现一个功能:任务调度,对于复杂的定时任务,可能是由多个任务组成一个任务组,它们之间存在依赖关系,一个任务执行的条件,必须是它的前置任务已经执行成功(或者没有前置任务),它才可以执行。这个时候可以使用DAG(有向无环图)去实现,这样就不用了另起一个定时任务,不断的去轮询前置任务的执行状态了。

      比如实现一个功能:寻找topk。我们可以使用大顶堆或者快速排序去实现。

    如何学习数据结构与算法

    学哪些内容

    参考脑图

    编程语言

    我主要是以python为主,java为辅,因为最近刚自学了python,正好趁此机会练习一下python

    相关参考书籍,视频,网站

    1. 推荐的教程

      王争老师的数据结构与算法之美

      覃超老师的算法40讲

    2. 推荐的书籍

      算法第四版,剑指offer,编程珠玑

    3. 推荐的网站

      算法第四版对应的代码

      查看各类算法的时间复杂度

    相关文章

      网友评论

          本文标题:数据结构与算法-学习之路-开篇

          本文链接:https://www.haomeiwen.com/subject/lcckuktx.html