数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最有效率算法。
利用代码解决实际问题,最重要的是解决问题的效率,主要是两个因素:
首先理解"抽象"的意义:
什么是算法?
什么是好的算法?(两个指标)
void PrintN(int N){………………//这个是函数,下面是它的功能 if(N){………………………………………//若N不为0,则就执行 PrintN(N-1);……………//此行的意义就是调用自己,即再进行判断,再执行功能 printf("%d\n",N);//此行执行无关上一行 } }
如果说N = 1000000000000,则就出现系统报错,原因是,函数在每一次调用时都是需要申领空间的,数据规模太大就导致内存爆满。当然存在不需要申领空间的方式实现该目的,所以这也是我们需要注意的地方。
二、时间复杂度
代码一: double f(int n,double a[],double x){ int i; double p = a[0]; for(i = n; i > 0; 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[i - 1] + x*p; } return p; }
若果说n为10000000000,代码一的用时必定比代码二的用时多,原因是前者的乘法运算量远远大于后者,并且乘除法用时是要多于加减法的。程序运行的总用时,是各个环节时间的累积。