那要看你循环里写什么代码呀
比如数组长度是n
如果你代码里用到了[i+m]这种结构,那你循环的最大值就只能是n-m-1,否则i+m不越界了吗
同理,如果你索引用到了[i-a],那么初始值就必须从a开始,否则i-a出负数了
至于到底为什么要写i+m和i-a,这都是围绕着算法来的
比如你想相邻两个元素互相比较,那你要么比较i和i+1,要么比较i和i-1,其实算法是一样的,但是由于写法的不同,i的含义是不同的
i和i+1,那么i指代相比较的两个数里左边那个数的下标
i和i-1比较,那么i是右边那个数的下标