如何评价代码的质量?
- 性能
- 可读性
- 拓展性
如何分析代码的时间复杂度和空间复杂度?(The most important)
什么是数据结构、什么是算法?
- 数据结构:数据的存储结构
- 算法:操纵数据的方法
面对不同量级的数据,需要选择相应的数据结构。举一个简单的例子,当我们只需要管理10本书的时候,我们根本不需要用什么方法,很快就能找到你要找的书;当我们要管理100本书的时候,我们的桌子可能就放不下了,我们就需要一个书架(类似于数据结构),为了让我们更加高效的找到某一本书,我们还需要按照一定的规则对这些书籍进行排序(类似于算法)。当我们需要管理100W本书的时候,光书架已经不够了,我们需要一个巨大的仓库,需要许许多多的书架。为了能够高效的管理这些图书,我们需要把一个仓库分类成多个仓库,每个仓库又有许许多多的书架,书架又是按照一定的规则排序,这样我们就能快速的找到相应的图书。
数据结构和算法的关系
数据结构和算法是相辅相成的,不同的结构有着不同的特点,充分的发挥这些结构的特点可以帮助我们高效的解决很多问题。
举一个现实中的例子:轮子都是设计成圆形,因为滚动摩擦力远远小于滑动摩擦力,由于圆形的这种特性,我们设计出轮子,帮助人们来运输货物,大大节省了重物在运输过程中消耗的体力,扩宽了人们运输的范围,也帮助完成超出人类水平的艰巨任务,如金字塔。
数据结构和算法导图
常见的数据结构
- 数组
- 链表
- 栈
- 队列
- 堆
- 哈希表
- 二叉树
- 图
- 跳表
- Trie树
常用的算法
- 递归
- 排序
- 查找
- 最短路径
- 动态规划
常碰到的时间复杂度
其中指数阶和阶乘阶都属于十分低效的复杂度量级,应该尽量避免。
//这段代码的时间负责度就是log(n)
i=1;
while (i <= n) {
i = i * 2;
}