|  | 
 
10鱼币 
| 如题,为什么加了注释的和没加的会有差别?!Windows下没有称手的调试工具,求请教! 
 复制代码#include <stdio.h>
int arr[101],n;
void insert_sort(int len) 
{
        int i, j, t;
        
        for (i=1; i<len; i++)
        {
                t = arr[i];
//                for (j=i-1; j>=0&&arr[j]>t; j--)
                for (j=i-1; j>=0&&arr[j]>arr[i]; j--)
                {
                        arr[j+1] = arr[j];
                }
//                arr[j+1] = t;
                arr[j+1] = arr[i];
        }
}
int main()
{
        int i, j;
        
        scanf("%d", &n);
        for (i=0; i<n; i++) 
                scanf("%d", &arr[i]);
        
        insert_sort(n);
        
        //print
        for (i=0; i<n; i++)
                printf("%d ", arr[i]);
                
        getchar(); getchar();
        
        return 0;
} 
 | 
 
最佳答案
查看完整内容 是的呀,j 对 i 没影响。
但是arr[j] 会对 arr 有影响。因为 j 的变化范围与 i 的值有交集。
for循环第一步,j = i - 1; 
arr[j+1] 这个不就是 arr 吗? |