javascript - 通过可汗学院在javascript中进行选择排序

标签 javascript algorithm

我不确定我的代码做错了什么,但它正确地对数字进行了排序,但也留下了这个输出:

Array after sorting: ,,,,,,,7,,9,,11,,,,,,,,,,,22,,,,,,,,,,,,,,,,,,,,42,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,88,,,,,,,,,,,99 

请帮助我解决我的代码问题!

var swap = function(array, firstIndex, secondIndex) {
        var temp = array[firstIndex];
        array[firstIndex] = array[secondIndex];
        array[secondIndex] = temp;
    };

var indexOfMinimum = function(array, startIndex) {

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

    for(var i = minIndex + 1; i < array.length; i++) {
        if(array[i] < minValue) {
            minIndex = i;
            minValue = array[i];
        }
    } 
    return minIndex;
}; 

var selectionSort = function(array) {
    var length = array.length;
    for(var i = 0; i < length; i++){
        var min = indexOfMinimum(array,array[i]);
        swap(array, i, min);
    }
};

var array = [22, 11, 99, 88, 9, 7, 42];
selectionSort(array);
println("Array after sorting: " + array);

Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);

最佳答案

您不需要索引 i 处的值,您只需要 i 本身。

var min = indexOfMinimum(array, array[i]);

应该是

var min = indexOfMinimum(array, i);

关于javascript - 通过可汗学院在javascript中进行选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30701326/

相关文章:

javascript - 使用 Javascript 将偏移量/本地时间添加到 UTC 日期/字符串

python - 有没有办法将列表输入到Python 3.6中以*args作为参数的函数中?

c++ - 可以创建 N 个方法的类接口(interface)

c# - 三角形存储为数组。每层的高度和长度?

algorithm - 什么是好的、简单的、仅限二维矩形的碰撞检测算法?

javascript - 如何在一天中的指定时间运行 JavaScript 函数?

javascript - sencha extjs 5.0 应用程序无法在生产版本中运行

javascript - ES6 箭头回调如何确定 'this' 是什么?

javascript - Puppeteer - 使用 querySelectorAll() 访问动态 HTML 环境中的元素

c - 崩溃的 Pop() 函数