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;
}
无法打印。
因为程序在用递归的时候,需要用到大量的内存,当数据过大时,就会出现内存错误。
这就说明,解决问题方法的效率,跟空间的利用效率有关。