int main(){
int i,j,temp;
int a[]={3,2,4,7,1};
for(i=1;i<5;i++){
temp=a[i];
for(j=i-1;j>=0;j--){
if(a[j]>temp)
a[j+1]=a[j];
else
break;
}
a[j+1]=temp;//if I replace this by a[i] I am getting wrong output.
}
for(i=0;i<5;i++)
printf("\n\n%d",a[i]);
return 0;
}
在内部循环中,我不改变变量i的值。然后,如果我替换a[j+1]=a[i]
,我得到错误的输出。我错过了一些重要的概念吗?插入排序错误
请你可以格式化代码 – 2014-10-04 08:58:13
另外,数组中的第一项索引为零 – 2014-10-04 08:59:00
@EdHeal仅仅因为循环从1开始并不意味着它使用了错误的索引...尤其是在排序算法中。注意'j = i-1' ...在0开始'i'会出错(和UB)。 – 2014-10-04 09:41:11