程序员leetcode 剑指 offer

java中的移位运算符:<<,>>,>>>总结 + 二分查找

2020-07-05  本文已影响0人  历十九喵喵喵

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

用于二分查找时,求中间值可以用。

例如:

mid = star + ( (end-star)) >> 1);//防止溢出

二分查找的思想:二分查找也叫折半查找,是在一组有序数组中查找某一特定元素的搜索算法。

搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果查找的元素大于或者小于中间元素,则在大于或小于中间元素的那一半数组元素中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。

实现细节:

定义两个下标,开始下标: star  和结束下表 end , 

star = 0; end = arr.length -1;

开始循环判断中间位置与 target 元素的大小:

确定中间位置,mid = start+((end - star)) >>1

如果相等,则返回寻找的元素或者 true;

如果 中间位置的值大于 target ,说明 target 在 左边,此时 end 下标要移到 mid 的前一个位置,即

end = mid -1;//往左找

如果中间位置的值小于 target ,说明 target 在右边,此时 star 下标要移到 mid 的后一个位置,即 

star = mid + 1; //往右找

上一篇下一篇

猜你喜欢

热点阅读