找出排序数组中存在的所有整数中的所有整数

时间:2012-12-05 14:32:52

标签: javascript jquery

  

可能重复:
  Simplest code for array intersection in javascript

我在javascript中有一个排序的整数数组。我需要找出排序数组中存在的一串整数中的哪一个。 最快的方法是什么?

我使用的是jQuery,但似乎它没有为排序数组的二进制搜索提供内置支持,只提供jQuery.inArray()(不确定它实现了什么算法)。

1 个答案:

答案 0 :(得分:0)

JavaScript语言和jQuery都不提供二进制搜索功能。

看起来像这样:

function binarySearch(array, val, cmp) {
  cmp = cmp || function(v1, v2) { return v1 - v2; };
  var l = 0, h = array.length - 1;
  while (l <= h) {
    var m = Math.round((l + h) / 2), diff = cmp(array[m], val);
    if (!diff) {
      return m;
    }
    diff > 0 ? (h = m - 1) : (l = m + 1);
  }

  return -1;
}

binarySearch([1, 10, 100, 1000], 666); // -1
相关问题