无论在哪个领域,最终都需要我们找到解决问题的具体方案、具体步骤,大到修建一栋大厦,小到做一次美味的晚餐。其实这里的具体步骤就是算法,计算机行业也不例外。

  然而现实中的很多问题比较抽象、复杂,难以直接找到具体的实施步骤。但不同领域、不同问题也有许多共通之处,是吧? 所以,计算机程序设计中为了找到所谓的“算法”,我们从很多问题中总结并抽象出了“数据结构”这一事物,来帮助我们找到“算法”。数据结构即数学上构建出来的数学模型。

  计算机中从逻辑结构和物理结构上看

        逻辑结构:强调数据对象中的元素之间什么样的关系。如:集合关系的集合结构,线性关系的线性结构,树形关系的树形结构,图形关系的图形结构。

    物理结构:强调逻辑结构在计算机中的存储方式,顺序存储,链式存储。

算法是针对特定问题的求解步骤。

    我们来看一个问题:求解1+2+3 …… +100的和。

为了解决问题,我们辅之以数据结构:将1,2……100以数组存放。这里的数组,逻辑上就是线性关系;物理上来说就是顺序存储。当然也可以建立链式存储,目前只以顺序存储为例。

/*
        数据结构建模
*/
    array[100]; // 声明数组

// 逻辑 线性结构,物理 顺序存储
for(i = 0; i < 100; i++)
    {
        array[i]=i + 1;
    }

好了,现在我们采取不同的算法来求解:

算法2:累加

// 算法一 
    int sum=0;
    for(i = 0; i < 100; i++)
    {
        sum=sum + array[i];
    }
    输出结果;

算法2:高斯算法

// 算法二
    int sum = 0, n = 100;
    sum = (1 + n) * n / 2 ;
    输出结果;

  很明显,对同一建模的数据结构,采用不同的算法,效率是不一样的。