程序=数据结构+算法
计算机的两大应用领域:
计算机处理的数值、字符等符号的总称
数据结构中讨论的基本单位
一个数据元素也可以由一个或若干个数据项组成,数据项是有意义的数据的最小原子单位。
性质相同的数据元素的一个集合
带结构的数据元素的集合/带结构的数据对象

数据类型:高级程序设计语言所定义的某类数据的集合和定义在该集合上的一组操作的总称。

算法所花费的时间代价。
问题的规模以某种单位由1增至n时,对应算法所耗费的时间也以某种单位由f(1)增至f(n)。此时称该算法的时间复杂度为f(n)。
同一个算法,视面对的数据不同,会导致时间代价不同:
所需占用的空间代价
和时间复杂度类似,最坏情况下用O(f(n))表示

分析递归函数的时间复杂度。简要说明分析过程。
int factorial(int n)
{
if(n<=0)return 1;
return n*factorial(n-1);
}
设时间复杂度为T(n),则T(n)=O(1)+T(n-1),其中O(1)对应的是if判断和n乘以factorial(n-1)的操作步骤,factorial(n-1)的时间复杂度为T(n-1),所以T(n)=O(1)+T(n-1)=2*O(1)+T(n-2)=……=n*O(1)+T(0)=O(n)
解题方法:循环的时间复杂度等于该循环体的复杂度乘以循环的次数
设n是描述问题规模的非负整数,下列程序段的时间复杂度是多少?简要说明分析过程。
x=0;
while(n>=(x+1)*(x+1))
x++;
设时间复杂度为T(n),1行的时间复杂度为O(1),2-3行为while循环,当(x+1)*(x+1)大于n时,结束循环,其时间复杂度为,所以T(n)=O(1)+=
解题思路:同上
设n是描述问题规模的非负整数,下列程序段的时间复杂度是多少?简要说明分析过程。
count=0;
for(k=1;k<=n;k*=2)
for(j=1;j<=n;j++)count++;
设时间复杂度为T(n),1行的时间复杂度为O(1),2行为外层for循环,时间复杂度为,3行为内循环,时间复杂度为O(n),所以T(n)= O(1)+ * O(n)=
解题思路:同上