数据结构---第一章绪论---算法和算法评价

1什么是算法?

算法是对特定问题求解的一种步骤,它是指令的有限序列,其中的每条指令表示一个或多个操作。

(1)算法具有五个特性:

有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在又穷时间内完成。
确定性:算法中每条执行必须有确定的含义,对于相同的输入只能得出相同的输出。
可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
输入:一个算法有零个或多个输出,这些输出取自于某个特定的对象的集合。
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。
算法的五特性是算法的必要条件,不是算法的定义。
算法是问题求解步骤的描述。

2以下算法中加下划线的语句的执行次数为

int m=0,i,j;
for(i=1;i<=n;i++)
	for(j=1;j<=2*i;j++)
		m++;

数据结构---第一章绪论---算法和算法评价_第1张图片

3什么是算法原地工作?

算法原地工作是指算法所需的辅助空间是常量。

4关于时间复杂度的一些问题

在相同规模下,复杂度为O(n)的算法总是在时间上优于复杂度为O(2^n)的算法。
时间复杂度总是考虑最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。

5一个算法所需时间由下述递归方程表示,试求出该算法的时间复杂度的级别。

T(n)={
	1,n=1;
	2T(n/2)+n,n>1;
}	

这道题其实犯的是主观印象的错误,救我觉得n是2的k次幂,那每次除以2不就是k次吗?但通过数学转化最后得到的不是这样,大概是因为T(n)所对应的数中还加上n的缘故。
从中得到一个经验教训,时间复杂度的问题,不能认为什么就是什么,一定要经过数学运算。
数据结构---第一章绪论---算法和算法评价_第2张图片

6三重循环怎么求时间复杂度?

for(i=1;i<=n;i++)
	for(j=1;j<=i;j++)
		for(k=1;k<=j;k++)
			x++;

12+22+32+……+n2=n(n+1)(2n+1)/6。
数据结构---第一章绪论---算法和算法评价_第3张图片

你可能感兴趣的:(数据结构,数据结构)