数据结构与算法分析—浅谈

大家好,这一节我们讲关于数据结构与算法分析开篇内容。

为什么在计算机课程中会有这一章节呢,数据结构作为新兴的独立研究内容,主要是现在计算机处理的非纯数字内容越来越复杂,而普通大众所使用的微型计算机在处理速度和时间上并不完全满足企业级的应用需求。只要你打算做为商业用途,那么无论你的项目规模如何,都需要谨慎地考虑用户空间的需求极限。

以前我有打过一个比方,为什么要研究和学习数据结构和算法呢?假如某一天你被派去统计一下会议室凌乱摆放的桌椅时,请问你是否需要在统计之前先将桌椅搭配并按照整齐的排列方式先摆好?没错儿,我们接下来所学习的数据结构也正是如此。计算机里的数据以什么样的方式存储,直接关系下后序处理数据时的效率。同样,数据会以什么样的方式处理,也直接关系到数据将以什么样的方式去存储。如果这一大堆数字只是用来做为网络传输用的,恐怕你会关心的是如何保证信息在到达接收方时的完整性。

需要特别说明的是,我们现在所讲的数据结构是指待处理数据在设计者图纸上的表现形式,也不是人思维的逻辑形式,而不是在计算机里真实的存储形式。如果单纯讲一个数字在计算机内存里如何存储,那就没有什么内容可讲,这种物理上的存储取决于这个时代的硬件水平,我还希望数字能够像烙印一样直接烙在硬件上,这可能吗?所以,这里讲的数据结构都是指设计上的表现形式。当然了,设计出来的数据结构,最终还是要存储在计算机内存里的,数据本身需不需要做一些操作限制,以及数据与数据之间如何关联,直接与当时所设计的数据逻辑结构一致。这就是我们所要学习和精究的主要内容。

举个例子,“二分查找法”是最简单的数据查找算法,由于数据已经事先被进行了排序(升序或降序)处理,所以这个算法对这类数据有效,说也同时说明前面我所讲的什么样的数据以摆放,取决于数据将要被如何操作。那么“二分查找法”的数据结构是什么样的呢?是队列,链,树,还是图?其实只是要“数组”就完全够用了,如果你采用“树”这种数据结构,那也是没有问题的。但如果是“树”,那么原本这些需要处理的单个数据在设计上和存储上不得不多增加二个额外的“前链”“后链”的额外信息空间,浪费存储空间。当然,添加这些额外的信息,虽然在查找方面可能是浪费了,但是如果这些数据不是简单地用来查找一下,而是进行更复杂地操作,或许定位数据更快更精准。往往为了达到精益求精的目的,需要在空间和时间上做一些必要的牺牲,谁说搞计算机的就一定是呆头呆脑的。

可以这样说,在计算机科学技术里,很多技术内容都来源于生活中的现实反映。现在的计算机所谓智能,还没有超越真实的生活,我们这些工作在IT产业链上的人,其实都是生活中的感应者。其实这跟生物仿生学一样,计算机很多新技术都来源于对生活中的一点感触。我相信,随着人类思想的不断开拓,数字世界所承载的智慧也会主动超越时代的发展需求。

随着“云计算”的到来,面对海量数据,数据分析师根本不够用,但是计算机却可以做到,从千丝万缕、错综复杂的数据联系中找到一个无法察觉的规律。

猜你喜欢

转载自szyzln.iteye.com/blog/1450411