关于排序的小疑惑,菜鸟求请指教

YI_Yl 2011-08-29 11:50:10
main()
{

int i,j,temp;
int aa[10]={23,45,1,5,8,9,23,0,1,12};
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(aa[j]>aa[j+1])
{
temp=aa[j];
aa[j]=aa[j+1];
aa[j+1]=temp;
}
}
}
for(i=1;i<11;i++) /* 为什么这里要从1开始输出才能得到排好的序? 从0结果就不对呢??
printf("%d,",aa[i]);
}
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
谷中岩松 2011-08-29
  • 打赏
  • 举报
回复
main()
{

int i,j,temp;
int aa[10]={23,45,1,5,8,9,23,0,1,12};
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)//i=0时,最后一个a[9]是与一个未知的数比较。
{
if(aa[j]>aa[j+1])
{
temp=aa[j];
aa[j]=aa[j+1];
aa[j+1]=temp;
}
}
}
for(i=0;i<10;i++) //* 为什么这里要从1开始输出才能得到排好的序? 从0结果就不对呢?? printf("%d,",aa[i]);
}
YI_Yl 2011-08-29
  • 打赏
  • 举报
回复
哈哈,我知道了。只是一时没想明白,结贴
AnYidan 2011-08-29
  • 打赏
  • 举报
回复

int main()
{

int i,j,temp;
int aa[10]={23,45,1,5,8,9,23,0,1,12};
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{
if(aa[j]>aa[j+1])
{
temp=aa[j];
aa[j]=aa[j+1];
aa[j+1]=temp;
}
}
}
for(i=0;i<10;i++) /* 为什么这里要从1开始输出才能得到排好的序? 从0结果就不对呢?? */
printf("%d,",aa[i]);

system("pause") ;
}
JackDoge 2011-08-29
  • 打赏
  • 举报
回复
for(j=0;j<10-i;j++)


10改成9

**************************

for(i=1;i<11;i++)

改成
for(i=0;i<10;i++)
YI_Yl 2011-08-29
  • 打赏
  • 举报
回复
main()
{

int i,j,temp;
int aa[10]={23,45,1,5,8,9,23,0,1,12};
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(aa[j]>aa[j+1])
{
temp=aa[j];
aa[j]=aa[j+1];
aa[j+1]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d,",aa[i]);
}

我这样写从0开始就是对的了,主要前面循环是j<10-i-1

应该是循环里面已经判断了j+1的情况了
woodenhouse 2011-08-29
  • 打赏
  • 举报
回复
没有 我这从0到10才是对的
YI_Yl 2011-08-29
  • 打赏
  • 举报
回复
我的分数不低吧

等等回答

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧