2 u012101920 u012101920 于 2013.10.07 21:46 提问

C++新手啊,遇到一个问题,想不通了,请大家指点

#include
using namespace std;
int main()
{ void select(int array[],int n);
int a[10],i;
for(i=0;i<=9;i++)
cin>>a[i];
select(a,10);
for(i=0;i<=9;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

void select(int array[],int n)
{
int i,j,k,temp;
for(i=0;i<9;i++)
{ k=i;
for(j=i+1;j<10;j++)
if(array[j]<array[k])
k=j;
temp=array[k];array[k]=array[i];array[i]=temp;
}
}

调用函数部分为什么不能写成这样:
void select(int array[],int n)
{
int i,j,temp;
for(i=0;i<9;i++)
{

for(j=i+1;j<10;j++)
if(array[j]<array[i])

temp=array[i];array[i]=array[j];array[j]=temp;
}
}

2个回答

galiniur0u
galiniur0u   2013.10.08 11:19
已采纳

问一下,你这是要进行冒泡排序吗?下面那个函数中if语句之后缺少一个大括号吧。
void select(int array[],int n)
{
int i,j,temp;
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(array[j]<array[i])
{
temp=array[i];array[i]=array[j];array[j]=temp;
}
}
}
}

u012101920
u012101920 啊啊啊,不是冒泡,是选择排序!!的确是缺了个大括号!问题就在这。。新手啦。。谢谢指教!
4 年多之前 回复
yang3768211
yang3768211   2013.10.09 14:28

运算效率的问题,第一种的执行效率比第二种的高,变量赋值比数组赋值效率高。
前一种方法是循环先把最小的值的下标找出来,最后做值调整,
而你的做法是发现小的就换值,两个方法都可以,但是数组赋值的效率比变量赋值要慢,
我也新手,这是我个人的看法。

u012101920
u012101920 哇,很有道理,有种恍然大悟的感觉,谢谢啦!
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!