2 qq 29777783 qq_29777783 于 2015.07.16 13:09 提问

c语言的问题求大神的指导!!!

#include"stdio.h"
main()
{
int a[10],i,j,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%5d",a[i]);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}我明明是想编从大到小为什么这是从小到大 if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}这条语句求解释

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.16 13:18
已采纳
 for(j=0;j<10;j++)
 改成
 for(j=i;j<10;j++) 

 k=a[i];//把i位置的值给临时变量k
a[i]=a[j];//把j位置的值给位置i
a[j]=k;//把临时变量K的值给位置j,实现位置i,j的值交换
John_ToString
John_ToString   2015.07.16 17:03

//csdn
#if 1
#include

void main()
{
int a[10],i,j,k;
for(i=0;i<10;i++)
scanf_s("%d",&a[i]);
puts("");
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<10;i++)
printf("%2d",a[i]);
}
#endif

首先,你的第一个问题:你代码写的就是从小到大排列,if(a[i]<a[j])交换的。
以上解答仅仅是提高了效率,但是牺牲了空间,当你的数据为升序的时候,空间效率接近O(n2)。

John_ToString
John_ToString   2015.07.16 17:03

//csdn
#if 1
#include

void main()
{
int a[10],i,j,k;
for(i=0;i<10;i++)
scanf_s("%d",&a[i]);
puts("");
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[i]<a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
for(i=0;i<10;i++)
printf("%2d",a[i]);
}
#endif

首先,你的第一个问题:你代码写的就是从小到大排列,if(a[i]<a[j])交换的。
以上解答仅仅是提高了效率,但是牺牲了空间,当你的数据为升序的时候,空间效率接近O(n2)。

sq419412002
sq419412002   2015.07.20 12:19

感觉楼上说的对////、

Csdn user default icon
上传中...
上传图片
插入图片