数组的最大两个元素求和

其实用数组的sort方法或Math.max方法不难求得数组最大两个元素的和,但有人觉得这样做性能不高。那我们就不使用这两种ActionScript方法,而通过比较遍历数组元素来实现。看下面代码:

function sumTwoLargest(arr:Array):int
{
  var count:int = arr.length;
  var largest:int;
  var secondLargest:int;
  var tmp:int;

  for (var i = 0; i < count; i++)   {     
    tmp = arr[i];     
    if (tmp > largest)
    {
      secondLargest = largest;
      largest = tmp;
    }
    else if (tmp > secondLargest && tmp < largest)
    {
      secondLargest = tmp;
    }
  }
  return largest + secondLargest;
}

var my_arr:Array = [1, 16, 16, 2, 18, 14, 18, 7];
trace(sumTwoLargest(my_arr));

注意第13、14行,不能交换位置。这种算法是否真的性能更高,有待检验。

发表评论