2012-12-24 39 views
-4

如何查找數組中的第二高數字如何在javascript中找到第二高的數字

+4

無家的作品哥們,你嘗試過什麼了嗎? – Arpit

+1

你會發現最高的數字,那麼你會發現這個數字是最高的,但是比你剛剛找到的數字要少。除非數組有<3個項目。 O(2N)。 – bokonic

+0

關閉它不是個好主意,因爲在我們的項目中,我們需要多次包括這個功能。 –

回答

1

如果您在列表中運行一次;你會發現最高的數字。 現在重複這一次,你會得到第二高的數字。

2
function getSecondHighest(arrCheck){ 
    var first=0,second=0; 
    for(var i=0;i<arrCheck.length;i++){ 
     if(arrCheck[i] > first){ 
      second = first; 
      first = arrCheck[i]; 
     } 
     else if(arrCheck[i]>second && arrCheck[i]<first){ 
      second = arrCheck[i]; 
     } 
    } 
    return second; 
} 
+0

如果數組中的第一個元素不起作用是最高的數字。例如[5,4,3,2,1]將返回0. – Nathan

0

看到這個:

var array = [267, 306, 108, 50, 909, 200]; 
var newCopy = [0]; 
for (i = 0; i < array.length; i++) { 
newCopy[i] = array[i]; 
} 
var largest = Math.max.apply(Math, newCopy); 
newCopy.splice(newCopy.indexOf(largest), 1); 
largest = Math.max.apply(Math, newCopy); 
alert(largest);​ 
1
function max(a){ 
var big = a[0]; 
var secondLargest =null; 
for(var i=0;i<a.length;i++){ 
if(a[i]>big){ 
secondLargest = big; 
big=a[i]; 
}else if(a[i]>secondLargest){ 
secondLargest =a[i]; 
} 
} 
return secondLargest; 
} 
+0

如果數組中的第一個元素是最高數字,則這將不起作用。例如[5,4,3,2,1]將返回5。 – Nathan