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