8
31
2015
0

C#中的二分查找


lower_boud()是C++中一个很好用的二分查找函数,但是我在C#中却一直没有发现这样的函数。(最近发现是有的,见另一篇文章

最近发现,C#中其实也有这个函数的,不过名字不一样,叫BinarySearch()。很多C#的线性容器都提供了这个方法,比如Array,List等。

这是MSDN中List<T>.BinarySearch()的帮助文档:https://msdn.microsoft.com/zh-cn/library/w4e7fxsh(v=vs.110).aspx

乍一看,这个方法找的是第一个和它相等的元素,这和lower_bound()是不一样,于是我就被骗了很久。。。

最近又仔细看了一下MSDN上的文档,然后发现了这句话:“否则为一个负数,该负数是大于 item 的第一个元素的索引的按位求补。如果没有更大的元素,则为 Count 的按位求补。”

于是真相浮出水面,BinarySearch()其实和lower_bound()是一样的,只是返回值稍有不同,使用时要注意判负数并按位取补。

Category: C#及OOP | Tags: BCL | Read Count: 315

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com