从n个数组列表中查找最小数组的算法

时间:2014-11-28 14:10:43

标签: javascript arrays algorithm

我需要从JavaScript中的n数组列表中找出最小的数组。什么是最好的算法?

var a = [1, 3, 2, 5, 3, 7, 3, 5, 9, 0],
    b = [2, 4, 7, 5, 1, 2, 8],
    c = [5, 3, 7, 6];

function doSomething() {
  // arguments
}

此处的结果应为c。那是[5, 3, 7, 6]

注意:未定义数组的数量,使用fn.call传递给函数的数组可能有10或100个

3 个答案:

答案 0 :(得分:1)

使用以下实现可以解决问题。

function doSomething(){
    var Result = a;
    if ( b.length < Result.length )
        Result = b;
    if ( c.length < Result.length )
        Result = c;
    return Result;
}

答案 1 :(得分:1)

var arrays = [
    [1, 3, 2, 5, 3, 7, 3, 5, 9, 0],
    [2, 4, 7, 5, 1, 2, 8],
    [5, 3, 7, 6],
]

function smallestArray(arrays) {
  var min = Number.POSITIVE_INFINITY;
  var smallest;

  for(var l = arrays.length-1; l >= 0; l--) {
    var length = arrays[l].length;
    if (length < min) {
      min = length;
      smallest = arrays[l];
    }
  }

  return smallest;
}

smallestArray(arrays)

答案 2 :(得分:0)

// Put them in an array
var arr = [a,b,c];
// Sort it
arr.sort(function (list1,list2){
    // compare lists by lengths
    return list1.length - list2.length;
});
// take the first one.
var shortest = arr[0];