| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1528 人关注过本帖
标题:谁的效率高?
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
还好我没仔细看这个帖子 :)

淘宝杜琨
2006-06-20 07:52
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
我从来不细看

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-20 08:47
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
//着者为“体外循环”的全局变量
void Calculate(int count,int sum)
{ char i;
for(i=0;i<2 && sum_no<half;i++)
{
sum=sum+Sign(i)*stone[count];
if(count>0)
Calculate(count-1,sum);
else if(count == 0)
{
sum_no++; /*sum_no <= pow(2,count-1)*/
if(min_sum>abs(sum))
{ min_sum=abs(sum);
me[0]=sum_no;
me_total=1;
}
else if(min_sum==abs(sum))
{
if(me_total<15)
me[me_total]=sum_no;
me_total++;
}
}
}
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-20 09:10
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
老K,你为什么不用回自己的ID

淘宝杜琨
2006-06-20 09:43
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
knocker已于2006年6月1日殉情自杀.

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-20 09:47
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
没改动前,程序将会执行pow(2,count)次函数Calculate(int count,int sum);
改动后只执行pow(2,count-1)次,少了一半;
但是,你看,我又增加了pow(2,count-1)次abs()函数的调用.
请问我这样改动能提高程序的执行效率吗???
为什么????

我就看这几句.
咱先加法学一遍.pow(2,count-1)+pow(2,count-1)=pow(2,count)
函数代价非常大,所以pow(2,count-1)+pow(2,count-1)次abs()函数的调用>pow(2,count)
楼主,编译器也愿做有规律的事情,单指效率是少用函数和全局.循环多的先执行(编译器优化代码后方便)
for(int i=0;i<4;i++)
{
for(int j=0;j<100;j++)
{
}
}
for(int i=0;i<100;i++)
{
for(int j=0;j<4;j++)
{
}
}
第一种效率比第二种好很多

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-20 13:30
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 
以下是引用song4在2006-6-20 13:30:04的发言:
没改动前,程序将会执行pow(2,count)次函数Calculate(int count,int sum);
改动后只执行pow(2,count-1)次,少了一半;
但是,你看,我又增加了pow(2,count-1)次abs()函数的调用.
请问我这样改动能提高程序的执行效率吗???
为什么????

我就看这几句.
咱先加法学一遍.pow(2,count-1)+pow(2,count-1)=pow(2,count)
函数代价非常大,所以pow(2,count-1)+pow(2,count-1)次abs()函数的调用>pow(2,count)
楼主,编译器也愿做有规律的事情,单指效率是少用函数和全局.循环多的先执行(编译器优化代码后方便)
for(int i=0;i<4;i++)
{
for(int j=0;j<100;j++)
{
}
}
for(int i=0;i<100;i++)
{
for(int j=0;j<4;j++)
{
}
}
第一种效率比第二种好很多

"所以pow(2,count-1)+pow(2,count-1)次abs()函数的调用>pow(2,count)"
你这话的意思是宁可循环操作,也不调用函数,因为函数的代价太大了.
也就是说改后的程序效率不如没改的.

宁可循环操作,也不调用函数.有道理!

可惜你没看程序,其实在循环中也调用了函数Calculate(int count,int sum)啊!
不过还是谢谢你!在你的话中到经过头脑分析的东西!我也受益!


Finding!!!
2006-06-20 23:07
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 
以下是引用–★–在2006-6-20 6:12:10的发言:

『数据结构与算法』告诉我们:
高效率的第一要素是算法设计

楼主不妨公布那道程序设计的题目,
比你高效N倍的程序定会跃然纸上。

往日无冤,近日无仇。俺–★–
为什么要“贬”楼主呢?因为
楼主的两版程序一个都没调通
证据:
1。如果都调通,效率高低立见分晓,何需问人?
2。新版不通。因为至少存在下列语法错误:
else if(min_sum == abs(sum);) //多了分号
{
if(me_total < 15) me[me_total]=sum_no;
me_total++;
}
3。老版不通。因为至少存在下列运行故障:
void Calculate(int count,int sum)
{ char i;
for(i=0;i<2;i++)
{ sum=sum+Sign(i)*stone[count];
if(count > 0)
Calculate(count-1,sum);
根据C的传值机制,红色累加的结果
无法通过目前的sum形参反馈回来。
4。新版程序的全局变量之多令人咋舌,
这就为调试埋伏下不少隐患。
===========================================
当然楼主下列自以为是的话语(floor 12)

实在不好意思!
一来题目很老了,有人讨厌我再提.
二来没必要看完全部代码.
三来我觉得我已将问题写清楚了,也许你不这样认为,你问一下不行吗!

出自一个求助者也令人厌恶。

楼主不妨公布那道程序设计的题目,
比你高效N倍的程序定会跃然纸上。
这话可是你说的哦!那我期待你高效N倍程序.
这题目本来很旧了,我也不想提,只是心里有点不甘,所以近段时间在想它.
下面是题目,你应该见过:

石头归并问题

转载:大家又没有比较好的思路阿!借鉴一下

Problem

你有一堆石头质量分别为W1,W2,W3...WN.(W<=100000)现在需要你将石头合并为两堆,使两堆质量的差为最小。

Input

该程序有多组测试数据,每组测试数据第一行为整数N(1<=N<=20),表示有N堆石子。接下去N行,为每堆石子的质量。

Output

每组测试数据只需输出合并后两堆的质量差的最小值。

Sample Input

5
5
8
13
27
14
2
4
4

Sample Output

3
0

"W<=100000",我没考虑那么重的石头!
这题目本身只重点要求一个结果:最的差值.
但我还想要具体分组的方法.没有这分组的方法,又怎样检验那个差值呢?是不是?
这个要求也有点合理吧?
石头的堆数也尽可能大些,我想计算30堆的,(这也是我不甘的地方,我没做到)
就是因为这点,所以我要比较程序执行的效率.
最好就是能用人脑去分析程序的效率啦!!!

还提这个题------->见笑了!!

Finding!!!
2006-06-20 23:29
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-20 23:31
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
不要开了,这题有人发过了,想看的搜索!

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-20 23:32
快速回复:谁的效率高?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016541 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved