当前位置: 首页 > 编程语言 > C#

C#中的范围查找?在C#中共享

时间:2023-04-10 23:21:24 C#

范围查找?我有一个非重叠范??围列表(数字范围,如500-1000、1001-1200...等),是否有一种优雅而快速的方法来仅按一个数字进行查找?我可以使用List.BinarySearch()或Array.BinarySearch()但我必须传递范围对象的类型(Array.BinarySearch(T[],T)),我可以传递一个虚拟范围对象并完成工作(只是从要比较的范围开始)但我想知道是否可以通过传递整数并获取范围对象以更简洁的方式完成,有没有办法实现这一点?三个选项:第三个选项是这样的:publicinterfaceIRangeComparer{//////如果值在指定范围内,则返回0;///如果值高于范围,则小于0;///如果值低于范围则大于0。///intCompare(TRange范围,TValue值);}//////查看Array.BinarySearch的契约///publicstaticintBinarySearch(IListranges,TValuevalue,IRangeComparercomparer){intmin=0;intmax=ranges.Count-1;while(min0){max=mid-1;}}返回?分钟;如果我犯了任何错误,我深表歉意。我根本没有测试它,但它至少可以编译:)如果你有.Net3.5或更高版本,请尝试foundRange=yourList.Where(range=?range.BottomNumber?=searchInt&&range.TopNumber?=searchInt)。FirstOrDefault();如果你有很多范围并且非常关心性能,你可以创建一个由范围(最小值,最大值)对组成的AVL类型树,但在范围的最低部分排序。但是,如果您没有足够的空间来对事物进行分类,那么大量的工作几乎没有任何好处。以上就是C#学习教程:C#中的范围搜索?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: