找到子阵列卡恩学院的最低价值

时间:2016-07-21 04:22:52

标签: javascript algorithm sorting computer-science sub-array

这个Kahn学院问题要求从第二个索引开始找到子数组中的最小值,我的算法返回4但是它没有提示我说我是正确的。

我想知道我的代码在哪里有缺陷或者可能更好。谢谢:)
/////////////////////////////////////////

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);

2 个答案:

答案 0 :(得分:0)

您需要进行简单的更改并拥有minIndex = i;

您正在扫描整个数组,这可能会在您的起始索引之前返回结果,以提及效率低下。

答案 1 :(得分:0)

问题在于以下两行:

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

您正在设置minIndex两次。一次使用数组中的值,另一次使用下一行搜索索引。虽然您已经拥有实际位置的索引,但您可以直接将其分配给minIndex

minIndex = i;

&#13;
&#13;
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);
&#13;
&#13;
&#13;