老师你好,我有两个问题

来源:15-5 如何刷Leetcode

迷茫小生

2020-04-21

一是既然,编程语言已经对于数据结构类型进行了封装,基本就是拿来即用,我们为什么要从底层去了解这些数据结构的实现呢,知道这些数据结构的特点,对于不同的问题对症下药不就可以了吗
二是,在代码实现的过程中,老师经常会对数据结构的不同类型进行时间上的比较,可是在我的电脑上,不同的数据类型之间的时间大小与老师演示的不同(不是数值不同,而是大小比较的不同)

写回答

1回答

liuyubobobo

2020-04-21

第一个问题,可以参考这里:http://coding.imooc.com/learn/questiondetail/95266.html


第二个问题,如果你也同样使用 Java 语言,数据的大小关系应该是一直的。比如 LoopQueue 应该是快于 ArrayQueue 的;基于 BST 的集合类,应该是快于基于数组的 BST 的。如果觉得效果不明显,最简单的方式就是加大数据测试量。


如果你是用的不是编译型语言(Java, C++),而是脚本型语言(Python,JS),出现这样的问题则更复杂。在这个课程的第一章,我以 Python 为例向大家说明了这个,即脚本型语言的性能强烈依赖于解析器的实现,而非我们的逻辑,所以,我个人不建议使用脚本型语言学习算法和数据结构。只学习逻辑还 Ok,但如果要看性能测试,就不准确的。


继续加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程