C语言:请列举一个以时间换空间或以空间换时间的例子,下面代码: 请帮忙解释一下空间和时间转换的原理?

void swap(int a, int b)
{
int c; c=a; a=b;b=a;
}
//--->空优
void swap(int a, int b)
{
a=a+b;b=a-b;a=a-b;
}
//根据以上的题意解释一下以时间换空间,和以空间换时间
//说的好,另加财富值,要详细说明。感谢!

第一个,用空间换时间,swap中定义了c,就是在内存中又开辟了一个int内存空间,然后一次swap需要进行三次赋值运算。
第二个,用时间换空间,swap中没有额外的定义变量,也就是没有内存的开辟。但是一共进行了3次加(减)法运算和三次赋值运算。运算次数比第一个多,所以时间效率低,但是没有开辟额外内存,所以空间效率高。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
我怎么觉得这两个是自定义的空函数,是两个调用函数,第一个是引入变量c,使a,b值交换;第二个也是值的变化,我就设开始时a=1,b=4
第一步:a=a+b=1+4=5 (a=5,b=4)
第二步:b=a-b=5-4=1 (a=5,b=1)
第三步:a=a-b=5-1=4 (a=4,b=1)
同样是实现交换两值
你说的时间换空间,是指变量的值和地址的关系吗?我也只懂这些而已,是个新手
第2个回答  2011-12-06
就着两段来说,下面一个swap没有使用中间变量,所以可以认为是空间优化,但是它的运算量比第一个swap要大,所以说第一个时间复杂度方面占优。
软件设计中,时间优化和空间优化是两个相互矛盾的方面,实际设计时应当全面权衡考虑。
其他的以空间换时间的例子如哈希查找表。
相似回答