一、什么是数据结构?
数据结构就是实现在内存中存储管理数据,建立数据间的关系。数据间的关系可以是线性(顺序表、链表等),也可以是非线性(二叉树、哈希、图等)。数据存储起来以后,方便我们去展示、查询等等。
二、什么是算法?算法和数据结构的关系?
算法是什么?
官方一点
算法(Algorithm):就是定义良好的计算过程,他取一个或者一组得值的输入,并且产生一个或者一组的值作为输出。简单来说就算法就是一系列的计算步骤,用来将输入数据转化为输出结果。
白话一点
算法就是利用计算机处理问题的步骤,简而言之,就是解决问题的步骤。比如:简单一点的算法,淘宝京东购物时按照价格、销量、综合评价排序,这里就用了排序算法,美团给你推荐排名前100的川菜馆、冒菜馆,这个就可以用堆实现优先级队列。复杂的算法,抖音对每个视频打标签归类,根据大家观察视频时长,点赞给大家推流的推荐算法。再比如大家在百度搜索资料时,搜索引擎的倒排索引算法。
数据结构与算法的关系?
两者相辅相成,秤不离砣,砣不离称。解决一些算法问题需要用到数据结构,比如TopK问题(N个数找出最大/最小的前K个)要用到堆,实现一些数据结构中,需要用到一些算法,比如二叉树,数据结构和算法你中有我,我中有你。
三、如何学好数据结构和算法?
手撕代码,除了会开车,还要了解发动机的原理,以后方便造轮子和看开源代码,数据结构是编程的内功。
以下是数据结构知识点的概述:
把以上列出的数据结构的思维都想清楚,知道它用来干嘛的,它实现的过程是怎么样的,最重要的是把这些思维多次思考融会贯通,随时能说出来它的实现过程。
四、数据结构推荐书籍?
学完以上基础的数据结构思维,就可以实践写代码,30%的时间学习思维,70%的时间应该用来写代码,巩固你的思维,知道该什么时候用这个数据结构,而且知道思维也不一定能写出来,需要多多实践。
六、总结
-
多画图,多思考
-
独立写出来,注意不要太依赖看着学的,脑子懂了,写出来确实快,但是容易忘记,要形容长期记忆最好还是练习。
-
多次刷,重复刷,书读百遍其意自现,读万卷书不如走万里路,时间充裕的情况下多次刷能获得新的思维和成长。