菜鸟解释数据结构与算法

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

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

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

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

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

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

    我们来看一个问题:求解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 ;
输出结果;

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

  不知道大家理解的怎么样?暂时只想到了这么个例子,可能有些不合适。

posted @ 2012-03-18 13:48  Revey.Jay  阅读(449)  评论(0编辑  收藏  举报