折返查找发(半分查找)

阅读: 评论:0

折返查找发(半分查找)

折返查找发(半分查找)

半分查找法是在有序数组中查找效率很高的方法。

半分方法有俩种,各有优缺点。

int _find(int x)
{int l=-1,r=_end;while(r-l>1){int mid = (l+r)/2;if(arr[mid]>=x) r = mid;else l=mid;}return r;
}

此方法是左开右闭,查找的所有相等的会放在右边,

最后返回与查找数相等的元素下标最小的那个。

如果查找的数比数组中所有数都大

会返回 数组最大下标+1;

但是如果比所有数都小,那么会返回最小下标,需要

重新比较arr[0]与x大小。

int _find(int x)
{int l=-1,r=_end;while(r-l>1){int mid = (l+r)/2;if(arr[mid]<=x) l = mid;else r=mid;}return l;
}

这种是左闭右开,所有与查找值相等的都会出现在左边,最后返回下表最大的元素。

如果数比数组中所有数都大,会返回最大下标,需要重新判断arr[n]与x大小。

如果查找数比所有数都小,那么会返回-1。

本文发布于:2024-01-27 20:07:38,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063572532365.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:黑马程序员
标签:半分
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23