数据结构论坛

首页 » 分类 » 分类 » 什么是算法算法基础篇
TUhjnbcbe - 2023/9/4 21:04:00
北京湿疹医院专家 http://m.39.net/disease/a_9100386.html

算法与数据结构

概念数据:数据是能被计算机识别、存储和加工处理的具有一定结构的符号的总称

数据项:具有独立意义的不可分割的最小的数据单位。

数据元素:是数据被使用时的基本单位,在计算机程序中通常作为一个整体进行处理。

数据对象:性质相同的数据元素的集合,是数据的一个子集。

数据结构:由一个数据元素的集合和一系列的基本运算组成。

数据结构包含:逻辑结构、存储结构

逻辑结构:数据元素之间的关系成为数据的逻辑关系,它与数据的存储无关(数据的逻辑结构是从逻辑关系上描述数据),是独立于计算机的。

线性结构(一对一)

实例:学生成绩表、个人身份证信息等。

树状结构(一对多)

实例:公司部门所属表、中国地区分布图等。

图状结构(多对多)

实例:课程教学安排、工作分配表等。

存储结构:数据结构在计算机中的表示称为数据的存储结构,也称为物理结构。它包括元素的表示和关系的表示。

顺序存储结构:把逻辑上相邻的元素存储在一组连续的存储单元,其元素之间的逻辑关系由物理位置的相邻关系表示。

优点:节省存储空间(分配的存储单元全用于存放元素的数据)。

缺点:不便于修改(修改时需要移动一系列元素)。

链式存储结构:将每个数据元素单独存放,称为一个结点,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针段,用于存放下一节点的存储地址。

也就是说:南京的结点存放的是成都的地址,所以该结点指向的下一结点为成都,而北京结点的下一结是上海。

优点:便于修改(修改时仅需改结点的指针域,不必移动结点)。

缺点:存储空间的利用率低(分配的空间没有全部用于存放数据之间的逻辑关系)。

算法:对特定问题求解步骤的一种描述

一个算法应该具有的特性:

有穷性:一个算法必须总是在执行执行有穷步之后结束,且每一步都在有限时间内完成;

确定性:算法中的每一步必须有确切的含义,不存在二义性;

可行性:算法中的每一步都可以通过已经实现的基本运算执行有限次来实现;

输入:一个算法有0个或多个输入,这些收入取决于某个特定的数据对象集合;

输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

算法描述的三种方式:非形式化、半形式化、形式化

评价一个好算法的标准:

正确性:算法应满足具体问题的需求;

高效性:算法执行时间的长短,时间越短,效率越高;(算法的效率也称为时间复杂度)

低存储量需求:指执行期间所需的最大存储空间(算法的存储量又称算法的空间复杂度)。

算法分析:时间复杂度分析和空间复杂度分析

时间复杂度(算法的重复次数):T(n)=O(f(n)),常见的有:常量阶O(1),线性阶O(n),平方阶O(n^2)、立方阶O(n^3)、对数阶、指数阶。

算法的时间复杂度

取决因素:实现语言、编译程序所产生目标代码的质量、硬件的速度、问题的规模。

问题的规模:和输入量有关的量,如元素的个数、矩阵的阶数等。

撇开与计算机硬件有关的因素,可以认为一个特定的算法“运行工作量”的大小只依赖于问题的规模n,它是问题规模的函数。

实例:两个n阶方阵相乘

voidmultiplyAB(inta[n],intb[n])

{

inti,j,k;

for(i=0;in;i++)

{

for(j=0;jn;j++)

{

c[j]=0;

for(k=0;kn;k++)

c[j]+=a[j]*b[j];

}

}

}

该算法中采用三层嵌套循环,算法的重复次数为n^3(问题规模),其时间复杂为T(n)=O(n^3)。

算法的空间复杂度:是执行算法过程中所使用的额外存储空间的开销。不包含算法程序代码和所处理的数据数据本身所占用的空间部分。通常情况下,额外空间与问题的规模有关。记为:

S(n)=O(f(n))

n为问题的规模。

若额外空间相对于输入数据量是常数,则称此算法为原地工作。

1
查看完整版本: 什么是算法算法基础篇