我试图执行选择算法,但它没有证明我的预期和我一直在研究的内容,我失败了什么?
我需要一个答案解释,我不来做我班上的任务,我来学习。
function selectSort(arr) {
var length = arr.length, // Array length
temp = 0, // Temporal var
min = 0; // Minimum
for(var i = 0; i < length; i++) { // Iterate over the array
for(var k = i; k < length; k++) { // Iterate to find the minimun element
var cur = arr[k]; // Current element
if(cur < min) min = k; // If the current element is less than the min, change the new min value
}
temp = arr[i]; // Save temporarily the current variable
arr[i] = arr[min];
arr[min] = temp;
// Change values
temp = null; // Delete reference
}
return arr;
}
console.log(selectSort([3,49,10,3,2,17,4,6,9,1]))
&#13;
答案 0 :(得分:0)
您的代码中不清楚min
是否应该是最小值(在搜索区域中)的索引或最小值< / em>本身。您以两种方式使用它,但这并不起作用。
答案 1 :(得分:0)
问题在于您将当前值与最小值的索引进行比较而不是当前最小值。
这应该有效:
function selectSort(arr) {
var length = arr.length, // Array length
temp = 0, // Temporal var
min = 0; // Minimum
for(var i = 0; i < length; i++) { // Iterate over the array
for(var k = i; k < length; k++) { // Iterate to find the minimun element
var cur = arr[k]; // Current element
if(arr[k] < arr[min]) min = k; // If the current element is less than the min, change the new min value
}
temp = arr[i]; // Save temporarily the current variable
arr[i] = arr[min];
arr[min] = temp;
// Change values
temp = null; // Delete reference
}
return arr;
}
console.log(selectSort([3,49,10,3,2,17,4,6,9,1]))
答案 2 :(得分:0)
1)在条件下你应该写cur&lt;一个[分钟]
2)必须在每次迭代时初始化Min,min = i