当前位置: 代码迷 >> C语言 >> 简单的循环语句提问
  详细解决方案

简单的循环语句提问

热度:122   发布时间:2007-01-31 16:47:17.0
插入排序问题
#include <stdio.h>
main()
{
int i, j, temp,item[5]={23,12,55,98,43};
for (i=1;i<n;i++;)
{
temp=item[i];
j=i-1;
while (j>=0 && temp<item[j])
{
item[j+1]=item[j];
j--;
}
item[j+1]=temp;
}
}
这个程序求助两天了,都没有理解,能否帮我解释下,下面的几处不能理解!!!
[QUOTE]j=i-1;
while (j>=0 && temp<item[j])
{
item[j+1]=item[j];
j--;
}
item[j+1]=temp;
[/QUOTE]
----------------解决方案--------------------------------------------------------
当i=1时,temp=item[1]=12;j=0;while(真),就进入循环(如果后面的一个数比前面的数小,就把前面的赋值到它后面的一个数上。)此时数组的排列是,item[5]={12,23,55,98,43}.
当i=2时,temp=item[2]=55,j=1;while(假),终止循环。
当i=3时~~~~~~~~~~~~~~~~~
然后依次进行~~~~~~~~~~
顶~~~~~~~~~~~~
----------------解决方案--------------------------------------------------------
O  ,xiexie
----------------解决方案--------------------------------------------------------
[QUOTE] item[j+1]=item[j];
j--;
}
item[j+1]=temp;
[/QUOTE]

既然把item[j]的值,赋给了item[j+1]
那么最后一句话,为什么又把temp赋值给了item[j+1],不是有把12赋值给了item[j+1]了吗

j--在这里起什么作用???
----------------解决方案--------------------------------------------------------
  相关解决方案