排序搜索提高性能

Joh*_*ohn -3 c# algorithm search

在 testdome 上进行练习...目前正在查看https://www.testdome.com/for-developers/solve-question/9877

实现函数CountNumbers,该函数接受一个排序的整数数组并计算小于参数的数组元素的数量lessThan

例如,SortedSearch.CountNumbers(new int[] { 1, 3, 5, 7 }, 4)应该返回 2,因为有两个小于 4 的数组元素。

我已经输入:

public class SortedSearch
{
    public static int CountNumbers(int[] sortedArray, int lessThan)
    {
         int returnedValued = 0;

            foreach (int i in sortedArray)
            {
                if(i<lessThan)
                returnedValued += 1;
            }

            return returnedValued;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(SortedSearch.CountNumbers(new int[] { 1, 3, 5, 7 }, 4));
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这被标记为难度级别和预期时间 20 分钟,而我知道它应该只需要几个。无论如何,4 个案例中有 2 个通过了。我在超出时间限制时失败,我猜我需要重构以返回更快的搜索。这是正确的吗?如果是这样,有人可以帮忙吗?

      示例案例:正确答案 
      各种小数组:正确答案 
      sortedArray 包含小于时的性能测试:超出时间限制 
      sortedArray 不包含小于时的性能测试:超出时间限制

Raj*_*mar 5

这通过了所有 4 个测试:

public static int CountNumbers(int[] sortedArray, int lessThan)
{
    int val = Array.BinarySearch(sortedArray, lessThan);
    return val < 0 ? ~val : val;
}
Run Code Online (Sandbox Code Playgroud)

正如其他人所说,他们希望您使用Array.BinarySearch,直到阅读第二个提示我才意识到。