自己理解的数据结构+算法

注:本文作者水平有限,只是照自己理解写了一些东西,观点可能是错误的,而且本文的逻辑性也不是很好,请大家见谅,如果感到本文还有可取之处、可改的价值、请大家指教。

    各种数据结构都有自己的算法,今天想清楚了一件事,为什么程序=数据结构 +算法。
    说白了就是各种数据结构现在都有自己的算法,数据结构就是计算机存储数据的结构(如哈希表,这种存储结构丽利于快速检索和存储数据),算法就是来操作这些数据结构的(如遍历算法),也就是各种数据结构的设计,是以算法的实现为依据的(就是可操作这种数据结构)

    因为我最近学习XML,所以这里顺带提一下 XML也是一种数据结构,操作XML的各种方法就是算法,指针也是为了操作数据结构而创作出来的。

    然后我们再推广到现实中的所有事物,都可以总结出一种或多种存储他们信息的结构,再设计出操作这种结构的方法(算法),中间就要考虑到时间复杂度O(X)。

    而面向对象的编程中,类实际也是一种数据结构,它是以现实事物为模板的一种数据结构,然后就产生了操作类的各种算法。

    这里想一下。再C语言中struct(结构),本身就是编程语言中最根本的数据结构吗?

    计算机存储器(内存、硬盘等)存储数据本身也是结构化存储,而操作他们中数据的原理就是多种算法。

    但这其中有2个目的是不能变的
        1.找到要操作的东西(典型为指针)
        2.操作找到的东西

    中间涉及到的是这个东西是用什么方式(数据结构)存在计算机中,然后选择找的方法(算法)找到以后操作的方法(还是算法)。

    接下来轮到程序员:
    我们的类、结构、数组、等等,都是种数据结构,类的实例存储在计算机中(一般为内存),存储的方式也是种数据结构(内存一般为堆栈式存储),每个类的实例在内存中分配资源。

    归根结底,计算机最根本的就是数据,所以产生了存储数据的各种结构(以不同形式存储数据,如链表、堆栈等)然后,又产生了操作这些存储数据的结构的各种算法。

    所以,到了最后,我们应该把所有的东西看作是数据所组成的数据结构,而我们要做的就是要写出操作他们的方法。

    呵呵,现在感觉比面向对象思想又向本源前进了一步。

    不过,我自己是个面向对象还没有怎么搞懂的程序员、先学跑并不一定好、基础!基础!基础!没有它什么都是瞎扯。

    写到这,做为面向对象的程序员我也想到了很多问题

    1.作为应用程序的各种架构。也是出于一种整体考虑的数据结构?由不同的数据结构组成?
    2.设计模式(代码重用性)也是一种复用性数据结构的考虑?

    小结:
    计算机最根本的数据是0和1,通过不同的组合,和组合后的不同解释,把它们转化为图片,影音,界面等。

    “源”这个字太奇妙了,体现了中国人把握事物根本的能力,万物莫不有源,我们一定要透过现象看到事物的本质,纵观全局。最终把握事物的所有的“源”。

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/671477.html