【问题标题】:insertion sort last item undefined插入排序最后一项未定义
【发布时间】:2016-12-19 15:52:53
【问题描述】:

我正在练习hackerrank,并希望使用插入排序来处理数据结构。给定String类型的数据结构:

6
1 4 3 5 6 2

我想从索引值 1 开始计数,因此计算索引 0 数组的大小和换行符,我应该从 2 开始。我想在每个循环中记录移动数组索引的每一步的输出左还是右。

function processData(input) {     
    function sort(input) {
        let values = input.split('\n')
        values = values[1].split(' ').map(i => parseInt(i));        
        var length = values.length;
        for(var i = 1; i < length; i++) {          

            console.log('input sort', values[i])
            var temp = values[i] === undefined ? null: values[i];
            var j = i - 1;
            for(j; j >= 0 && values[j] > temp; --j) {
                values[j+1] = values[j];    
            }
            values[j+1] = temp;
            var result = values.join(" ");

            console.log(values);
       }
       // return values;
   };
};

我的输出如下。注意尾随的未定义。我对这些排序算法还是新手,我希望有人能解释它的来源。

input sort 4
[ 1, 4, 3, 5, 6, 2 ]
input sort 3
[ 1, 3, 4, 5, 6, 2 ]
input sort 5
[ 1, 3, 4, 5, 6, 2 ]
input sort 6
[ 1, 3, 4, 5, 6, 2 ]
input sort 2
[ 1, 2, 3, 4, 5, 6 ]
undefined

我想要一个没有未定义字符的输出。

[ 1, 4, 3, 5, 6, 2 ]
input sort 3
[ 1, 3, 4, 5, 6, 2 ]
input sort 5
[ 1, 3, 4, 5, 6, 2 ]
input sort 6
[ 1, 3, 4, 5, 6, 2 ]
input sort 2
[ 1, 2, 3, 4, 5, 6 ]

【问题讨论】:

    标签: javascript arrays node.js sorting insertion-sort


    【解决方案1】:

    这与你的算法无关。

    你在最后看到的那部分看起来像:

       // return values;
    

    删除//

    您在最后一行得到undefined,因为该函数没有返回值并且您在控制台中运行它。它不是来自您的 console.log 语句之一,而是来自打印出执行的最后一行的结果的默认控制台行为。在这种情况下,最后一行是一个没有值的函数,它产生undefined

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多