①多项式求和的两种方法。
double f(int n, double a[], double x)
{ int i;
double p = a[0];
for ( i=1; i<=n; i++)
p += (a[i] * pow(x, i));
return p;
}
double f(int n, double a[], double x)
{ int i;
double p = a[n];
for( i=n; i>0; i--)
p = a[n-1] + x*p;
return p;
} //professional programmer
后者运行速度更快。
②求函数运算时间的函数clock()。
#include <stdio.h>
#include <time.h>//需引用头文件
clock_t start, stop;
/* clock_t是clock()函数返回的变量类型 */
double duration;
/* 记录被测函数运行的时间 以s为单位 */
int main ()
{
start = clock();
MyFunction();//被测函数的调用
stop = clock();
duration = ((double)(stop - start))/CLK_TCK;
}
对1.1什么是数据结构的总结。
1、数据结构和算法是不能割裂的。
2、从图书馆摆放书的例子来看,解决问题的效率跟数据的组织有关系。
3、关于循环和递归,递归十分占用内存,小的例子可能不明显,但是大的例子递归无法执行。由这个例子来看,解决问题的效率跟空间利用率有关。
4、从多项式求和的两种方法的例子来看,解决问题的效率跟算法的巧妙程度有关。
5、数据对象、操作、算法。
6、抽象数据类型(Abstract Data Type)只关心操作是什么,不关心实现细节。
对于1.2什么是算法的总结。
1、算法的定义:有限指令集、接受输入(一般)、产生输出、在有限步骤后终止、指令(无歧义、计算机可处理、不依赖于语言)。
2、空间复杂度S(n)和时间复杂度T(n)决定一个算法是否优秀。
3、复杂度的渐进表示方法:上界O、下界Ω、上下界相等θ。