2016-07-21 36 views
0

Diese Kahn Academy Frage fragt nach dem minimalen Wert in Sub-Array ab dem 2. Index, mein Algorithmus gibt 4 zurück, aber es hat mich nicht aufgefordert, zu sagen, dass ich richtig bin.Finden Sie den Mindestwert von Subarray Kahn Academy

Ich frage mich, wo mein Code fehlerhaft ist oder könnte besser sein. danke :)
///////////////////////////////////////////////

var indexOfMinimum = function(array, startIndex) { 

// Set initial values for minValue and minIndex, 
// based on the leftmost entry in the subarray: 

var minValue = array[startIndex]; 
var minIndex = startIndex; 

for (var i = minIndex + 1; i < array.length; i++){ 

//iterate through array 
    if (array[i] < minValue) { 
     minValue = array[i]; 
     minIndex = array[minValue]; 
     minIndex = array.indexOf(minValue); 
    } 
} 
// Loop over items starting with startIndex, updating minValue and minIndex  as needed: 
return minIndex; 
}; 
var array = [18, 6, 66, 44, 9, 22, 14]; 
var index = indexOfMinimum(array, 2); 
+1

Was Sie mit 'minIndex' dort tun? Es scheint, dass es innerhalb der Schleife "minIndex = i;" sein sollte. – 4castle

Antwort

0

Sie wollen eine einfache Änderung und haben minIndex = i;

Sie derzeit das gesamte Array gescannt werden, die Ergebnisse vor Ihrem Startindex nit zurückkehren könnte die Ineffizienz zu erwähnen.

+0

Dankeschön es zu schätzen! –

+0

Btw 4 ist die richtige Antwort für Ihre Daten. –

0

Sie haben ein Problem mit zwei Linien:

minIndex = array[minValue]; 
minIndex = array.indexOf(minValue); 

Du minIndex zweimal einstellen. Einmal mit einem Wert aus dem Array und in der nächsten Zeile mit einer Suche nach dem Index. Eine Weile haben Sie bereits den Index der tatsächlichen Position, Sie können es direkt an zuweisen.

minIndex = i; 

var indexOfMinimum = function (array, startIndex) { 
 
    var minValue = array[startIndex], 
 
     minIndex = startIndex, 
 
     i; 
 

 
    for (i = minIndex + 1; i < array.length; i++) { 
 
     if (array[i] < minValue) { 
 
      minValue = array[i]; 
 
      minIndex = i;         // assign here the index 
 
     } 
 
    } 
 
    return minIndex; 
 
}; 
 

 
var array = [18, 6, 66, 44, 9, 22, 14], 
 
    index = indexOfMinimum(array, 2); 
 

 
console.log(index);