24小时热门版块排行榜    

查看: 254  |  回复: 1

1xiaomuchong

铜虫 (初入文坛)

[交流] 【原创】浅论论算法效率

思考:今要比较十个数的大小并按升序排序,如何编程,算法如何设计腻?

                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 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

Algorithm 1频度:9*9=81
Algorithm 2频度:9+8+...+1=(1+9)*9/2=45
2楼2011-03-22 20:09:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 1xiaomuchong 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见