先看程序:
当读入的val的值为偶数如4时,程序进入死循环,关键点在
应该是high = mid -1 ;
但是
mid =(low + high) / 2
还是个bug,因为low+high超出int表示的正数范围时就会变成负数,这时mid也跟着错了,而后面用mid取数组元素自然也不对了。可改成:
int mid = low + ((high - low) / 2);
先看程序:
当读入的val的值为偶数如4时,程序进入死循环,关键点在
应该是high = mid -1 ;
但是
mid =(low + high) / 2
还是个bug,因为low+high超出int表示的正数范围时就会变成负数,这时mid也跟着错了,而后面用mid取数组元素自然也不对了。可改成:
int mid = low + ((high - low) / 2);