大概是这样,下面代码是我自己写的但是写到这里的时候我参照了您的代码:
while(i<=r && arr[i]<v) i++;
while(j>=l+1 && arr[j]>v) j--;
就是要保证 i 和 j 都不会越界的这个条件,如果改成以下:
while(i<=j && arr[i]<v) i++;
while(i<=j && arr[j]>v) j--;
我想的是,当左指针i和右指针j相遇了,就可以停止判断了吧。这样是否可以呢,其它的不变。好像逻辑上没什么不一样,按原来的代码,如果i>j了,后面一个条件也自然不会成立了。但是就是怕万一后者有什么我自己没有发现的漏洞,所以就是求个断定。。。