我的选择排序算法出了什么问题?

时间:2018-01-19 03:30:01

标签: javascript algorithm sorting

我试图执行选择算法,但它没有证明我的预期和我一直在研究的内容,我失败了什么?

我需要一个答案解释,我不来做我班上的任务,我来学习。



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

3 个答案:

答案 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