- 课堂讨论参考答案区
- 帖子详情
老师参与
【参考答案】讨论1.1 关于中等规模、大规模的图书摆放
陈越
发表于2021年03月23日
<p>提出这个问题,实际上是想让大家思考,在考虑大规模数据存储的时候会遇到什么问题,以及如何根据功能(也就是关联的算法,最常见的就是插入、查找、删除)需要设计存储方式。</p><p><br ></p><p>很多人想到了分类——先分大类,每类再细分成小类、更小的类……分到比较细了再排序。这是“树”(第三讲内容)的思想:从树根出发(就是“进入书店”),顺着一个分枝(大类)找下去,又面临很多分枝(小类),再继续找…… 找到最后是一个有序的小集合(这是B-树,不过我们这门课不讲)。这样做的时候,我们需要一些额外的空间去存储每一类中更小类的信息——你走进书店,得能看到有几大类;等你进了某大类,在那里又应该能看到下面有什么小类……这些信息都得存储。如果这棵树太深,你要转很多层才能找到你要的书,是不是很累=_= 如果想把树设计得浅一点,那每层会出现一大坨并列的信息,你还是会晕菜=_= 所以树是个比较难搞的结构啦……</p><p><br ></p><p>还有人想到了编号——按一定规则(比如用2位数字表示大类、3位表示出版社、2位表示出版年代……)生成一个跟位置对应的编号,输入一本书的相关信息,直接算出来它的编号,找到对应的位置。这是“散列”(第十一讲)的思想,看上去很美好,一步到位!但是其实…… 这个问题等何老师来告诉大家 ^_^</p><p><br ></p><p>想到把新书和旧书以及畅销书分开放的人,你很厉害!事实上我们的计算机就是这么干的——这就是缓存(Cache)的作用,把你最常用的东西放在一个专门的、可以快速访问的地方。所以买机器要看缓存大小,想要快一点就买大一点的缓存哈~ ^_^ 做互联网搜索的公司每分钟都从网上爬下来海量的网页信息,他们存储这些信息的技巧之一,就是把活跃的和不活跃的数据分开放。</p><p><br ></p><p>实际上,在处理海量信息(时髦点说是“大数据”)的时候,往往是很多种方法结合在一起用的。而怎么结合能更好地解决问题?这里就是大家尽情发挥想象力的地方啦~ 没有最好,只有更好——通常没有什么算法是在任何情况下都最好的,我们这门课只为大家介绍经典的数据结构与算法,而针对某个具有特殊性质的问题,你应该能自己设计出更好的方法去解决。</p><p><br ></p>