c语言,选择排序法,,我排的运行结果不对,求助高手,,谢谢

2025-04-04 08:07:33
推荐回答(2个)
回答1:

中间的两层for循环改成这样:
for(i=0;i<=9;i++)
.... for(j=i+1;j<=9;j++)
.....{
..........if(a[i]............{
.................t=a[i];a[i]=a[j];a[j]=t;
............}else ;
.....}
其余部分不用动。
你写的这个为什么非得定义一个最小值呢?实际上,我上面这一段a[i]中就是时刻都是最小值,没有必要.。你增加了中间变量之后,徒徒增加了你自己的脑袋负担,搞得逻辑复杂,更容易让自己出错,你说是不是。

回答2:

for(i=0;i<9;i++){
k = i;
for(j=k+1;j<10;j++)
if(a[k] > a[j])
k = j;
if(k!=i){
t = a[k];a[k]=a[i];a[i]=t;
}
}