代码之家  ›  专栏  ›  技术社区  ›  daniel.sedlacek

在Javascript的1d数组中查找min和max之间的值

  •  0
  • daniel.sedlacek  · 技术社区  · 7 年前

    var values : number[] = tree.findBetween(min : number, max: number);
    

    搜索的性能是主要的标准。

    而且,在构建树之后,我不需要更改它(添加/删除值)。

    我需要什么?二叉树?平衡搜索树?静态搜索树?

    我从哪里开始?

    2 回复  |  直到 7 年前
        1
  •  1
  •   daniel.sedlacek    7 年前

    多亏了 @bergi 对于答案,我真的不需要构造一个搜索树来对排序数组执行二进制搜索,所以我应该能够找到我的值并在它们之间获取数组的一部分。

    出于好奇,我发现 interesting article 通过数组比较二进制搜索和普通搜索循环的性能。这篇文章错误地包含了将数组排序到搜索时间的时间——只有在有排序数组的情况下才应该使用二进制搜索(如果可以在性能关键期之前对其进行预排序)。我运行的代码最多包含一些1e7项,对排序数组进行二进制搜索需要0毫秒,而对数组进行简单循环则需要数十毫秒。

    https://oli.me.uk/2014/12/17/revisiting-searching-javascript-arrays-with-a-binary-search/

    谢谢大家的帮助。

        2
  •  1
  •   Mister Jojo Łukasz Daniel Mastalerz    7 年前

    除此之外: 有什么比本地js方法更快的呢?

    const
      MaxValue = 50,
      MinValue = 10
      ;
    
    let
      ArrayOrigin = [12, 5, 8, 130, 44, 25, 14, 42, 36 ],
      ArrayInLimits = ArrayOrigin.filter( elm=>  elm>MinValue && elm<MaxValue)
      ;
    
      console.log( ...ArrayInLimits );