1.解决问题的方法的效率,跟数据的组织方式有关:
例如:
在书店众多书中查找一本书,如果要一本一本找,效率很低。如果按拼音放,按二分查找,效率会高一些,但是如果要插入一本书,势必要先找到这本书对应的位置,然后将后面所有的书后移一位,由于数目庞大,耗费的时间精力也很巨大。
如果再将书划分一下种类,例如计算机类,社会科学类等等,再将类里的书按拼音排序,查找效率会提高,插入要移的位也会减少,这也是提高效率的一种方法。
当然,如果类分的少,那书依然很多 ,查找还是很麻烦,如果类分的太多,太细,比如书城的书分了上万类,那要知道这本书是哪一类,也很头疼,因此,如何分类也是一个需要斟酌的问题。
举这个例子,是为了说明,解决问题的方法的效率,跟数据的组织方式有关。
2.解决问题方法的效率,跟空间的利用效率有关:
以两个程序说明:
要求:打印1000 000个数字
(1)用for循环打印
/* ************************************************************************** * File Name: 1,PrintN.c * Function : 1) void PrintN(int n)</span> * 2) * Author : BingX29 * Created Time: 2016年09月27日 ************************************************************************** */ #include <stdio.h> void PrintN(int n) { int i; for(i = 1; i <= n; i++) { printf("%d\n", i); } } int main() { int n; printf("Please input a number:\n"); scanf("%d",&n); PrintN(n); return 0; }顺利打印了1000 000个数字。
(2)用递归打印
/* ************************************************************************** * File Name: 2.PrintNR.c * Function : 1)void PintNR(int n) * 2) * Author : BingX29 * Created Time: 2016年09月27日 ************************************************************************** */ #include <stdio.h> void PrintNR(int n) { if(n > 0) { PrintNR(n - 1); printf("%d\n",n); } return; } int main() { int n; printf("Please input a number:\n"); scanf("%d",&n); PrintNR(n); return 0; }无法打印。
因为程序在用递归的时候,需要用到大量的内存,当数据过大时,就会出现内存错误。
这就说明,解决问题方法的效率,跟空间的利用效率有关。