| 查看: 254 | 回复: 1 | |||
[交流]
【原创】浅论论算法效率
|
|
思考:今要比较十个数的大小并按升序排序,如何编程,算法如何设计腻? Algorithm1: for(i=0;i<=8;i++) { for( j=0;j<9;j++) if(f[j]>f[j+1]) {t=f[j];f[j]=f[j+1];f[j+1]=t;} } Algorithm2: for(i=0;i<=8;i++) { for( j=0;j<9-i;j++) if(f>f[j+1]) {t=f;f=f[j+1];f[j+1]=t;} } 算法:对特定问题求解步骤的描述,有五大特征。 1.有穷性:执行有穷步之后结束,在有穷时间内完成。 2.确定性:语句无歧义,输入相同的值得到相同的结果。 3.可行性:可以通过已经实现的基本运算执行有限次来实现的。 4.I/O,0个或更多输入,1个或多个输出。 很显然这两种算法都满足算法的基本特征,设计一个算法有深要求?但关键是我们现在需要考虑的是哪种算法效率更好? 怎么去评价一个算法的好坏? 1.正确性(correctness)最基本 2.可读性(readability):算法的主要目的是与人交流,其次才是机器执行,可读性好的有助于人对算法的理解。 3.健壮性(robustness):当输入不合法的数据时,算法也能适当做出反应或进行处理。 4.效率与低存储量的需求:效率就是算法执行的时间,存储量是指算法执行过程中所需的最大存储空间。 Algorithm1语句的频度(frequently count,指该语句重复执行的次数)为i(0-8)*j(0-8)=91 Algorithm2语句的频度(frequently count,指该语句重复执行的次数)为i(0-8)*j(0-9-i)=45 因此第二种算法效率更好!. [ Last edited by 1xiaomuchong on 2011-3-24 at 10:05 ] |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
2楼2011-03-22 20:09:21












回复此楼