插入排序最后一项未定义
insertion sort last item undefined
我正在练习 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 ]
这与你的算法无关
你看到最后的那部分看起来像:
// return values;
删除//
。
您在最后一行得到 undefined
,因为该函数没有 return 值,而您在控制台中 运行 它。它不是来自您的 console.log
语句之一,而是来自打印出最后一行执行结果的默认控制台行为。在这种情况下,最后一行是一个没有值的函数,它产生 undefined
.
我正在练习 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 ]
这与你的算法无关
你看到最后的那部分看起来像:
// return values;
删除//
。
您在最后一行得到 undefined
,因为该函数没有 return 值,而您在控制台中 运行 它。它不是来自您的 console.log
语句之一,而是来自打印出最后一行执行结果的默认控制台行为。在这种情况下,最后一行是一个没有值的函数,它产生 undefined
.