c# – BinarySearch如何在两个邻居之间找到数组中的值?

c# – BinarySearch如何在两个邻居之间找到数组中的值?,第1张

概述我有一个排序数组double. 目标是在Array中查找索引. 其中包含< =搜索值的值. 例如,数组包含数字{0,5,12,34,100},索引范围为[0 .. 4]. 搜索值= 25.我想得到指数= 2(出现的范围在12到34之间) 我不明白在这种情况下如何运行二进制搜索. public class MyComparer : IComparer<double> { pu 我有一个排序数组double.
目标是在Array中查找索引.
其中包含< =搜索值的值. 例如,数组包含数字{0,5,12,34,100},索引范围为[0 .. 4]. 搜索值= 25.我想得到指数= 2(出现的范围在12到34之间) 我不明白在这种情况下如何运行二进制搜索.

public class MyComparer : IComparer<double>    {        public int Compare(double x,double y)        {            //<-------- ???        }    }    public double[] spline_x;    MyComparer cmpc = new MyComparer();    int i=Array.BinarySearch(spline_x,x,cmpc);
解决方法 当二进制搜索没有在数组中找到项时,它返回一个负数,它是第一个元素的索引的位数补码,它大于value.以下是使用它来查找范围的方法:

double[] spline_x = { 0D,5D,12D,34D,100D };int i = Array.BinarySearch(spline_x,25);if (i >= 0){    // your number is in array}else{    int indexOfNearest = ~i;    if (indexOfNearest == spline_x.Length)    {        // number is greater that last item    }    else if (indexOfNearest == 0)    {        // number is less than first item    }    else    {        // number is between (indexOfNearest - 1) and indexOfNearest    }     }
总结

以上是内存溢出为你收集整理的c# – BinarySearch如何在两个邻居之间找到数组中的值?全部内容,希望文章能够帮你解决c# – BinarySearch如何在两个邻居之间找到数组中的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1222403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存