- 论坛徽章:
- 0
|
请教一个初级程序的代码规范问题,见代码:
#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 编辑 ] |
|