免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1473 | 回复: 1
打印 上一主题 下一主题

请教一个初级程序的代码规范问题,见代码: [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-12 14:47 |只看该作者 |倒序浏览
请教一个初级程序的代码规范问题,见代码:

#include <iostream>
using namespace std;
int main()
{
        void select_sort(int *p,int n);
        void select_sort2(int array[],int);
        int a[10],i;
        int *pp;
        cout << "enter the originl array:" << endl;
        for(i=0;i<10;i++)
                cin >> a;
        cout << endl;

        pp=a;
        select_sort(pp,10);
        cout << "the sorted array:" << endl;

        for(i=0;i<10;i++)
                cout << a << " ";
        cout << endl;
        return 0;
}

void select_sort(int *p,int n)
{
        int i,j,k,t;
        for(i=0;i<n-1;i++)
        {
                k=i;
                for(j=i+1;j<n;j++)
                {
                        if(*(p+j)<*(p+k))
                                k=j;
                }
                if (k!=i)  //这里加判断好,还是不加判断好呢?加不加结果都是正确的
                {
                        t=*(p+k);
                        *(p+k)=*(p+i);
                        *(p+i)=t;
                }
        }
}


就是下面这个地方,交换两个数时,用不用先判断是否相等,其实判断与否不影响最终效果,因为如果
k==i时,交换与不交换是一样的,惟一的区别是做了没有意义的操作,
我想问的是,在设计程序时,这种情况如何把握一个原则,判断效率高,还是不判断效率高呢?
我的代码是书上抄的,书上是没有写判断的,但是我认为加上判断更好些,大家以为呢?


                if (k!=i)  //这里加判断好,还是不加判断好呢?加不加结果都是正确的
                {
                        t=*(p+k);
                        *(p+k)=*(p+i);
                        *(p+i)=t;
                }

[ 本帖最后由 ggyy66 于 2009-9-12 14:50 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-09-13 11:31 |只看该作者
加不加判断不要紧,但注释是一定要加的,如果楼主不说,不反复看,真看不出加和不加有什么区别

至于效率,如果不是瓶颈,就还是可读性优先,当然这里可读性都一样。
相等的概率有多高?如果很低,那么很多不相等的情况下,要多执行一条判断语句,当然判断语句的开销要低很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP