数据结构和算法(What Why How)

数据结构和算法是什么?

从广义上讲,数据结构就是指一组数据的存储结构。算法就是操做数据的一组方法。面试

从狭义上讲,是指某些著名的数据结构和算法,好比队列、堆、栈、二分查找、动态规划等。算法

数据结构和算法有什么关系?

数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要做用在特定的数据结构之上。所以,咱们没法孤立数据结构来说算法,也没法孤立算法来说数据结构。数组

为何要学数据结构和算法?

若是不学数据结构和算法:

  • 难以经过大公司的面试
  • 编写的代码运行效率低下,占用存储空间大
  • 写出来的框架Bug多、性能通常、扩展性很差

学好了数据结构和算法:

  • 大大提高进入大公司的机会
  • 编写的代码运行“更快”和“更省存储空间”
  • 写出来的框架能够开源到Github上给不少人用

怎么学数据结构和算法?

学习的重点在哪里?

首先,要掌握数据结构与算法最重要的概念——复杂度分析。微信

20个最经常使用的、最基础数据结构与算法

10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树数据结构

10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法框架

学习的一些技巧

一、边学边练,适度刷题

每周花几个个小时的时间,把上述20个经常使用的数据结构和算法,所有本身写出来,用代码实现一遍,同时能够去leetcode或lintcode刷刷题。数据结构和算法

二、多问、多思考、多互动

写好一段代码之后,要问一下本身:这样写合适吗?有没有更好的方法?若是用其余方法写,效果如何?性能

多找几我的一块儿学习,之前我都是本身学习,如今愈来愈意识到互动的重要性,此次加入了一个「一块儿学数据结构和算法」的微信群,你们互相监督学习,有了良好的学习氛围,对学习帮助也更大。学习

三、经过输出倒逼输入

每节课后都写下一篇笔记或学习心得,输出文章自己也是一个学习的过程,经过写文章,不只提高了写做能力,也能倒逼本身学习更多知识。code

四、知识须要沉淀,不要试图一会儿掌握全部

遇到学不懂的知识点,不要急躁,学习知识的过程就是反复迭代、不断沉淀的过程。

相关文章
相关标签/搜索