为什么我的代码没有 运行 ?插入排序
Why my code doesn't run ? Insertion Sort
插入排序函数不工作,错误是:一个函数花费的时间太长运行。也许您的代码有误?
// this function
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
var insertionSort = function(array) {
for(var i = 0; i < array.length ; i++)
{
insert(array,i,array[i+1]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
println("Array after sorting: " + array);
Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);
您的问题在于将数组位置选择为 [i+1]
和 [j+1]
改变
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
进入
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j > 0 && array[j-1] > value;
j--)
{
array[j] = array[j-1];
}
array[j] = value;
};
和
insert(array, i, array[i+1]);
进入
insert(array, i, array[i]);
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
var insertionSort = function(array) {
for(var i = 0; i < array.length - 1 ; i++)
{
insert(array,i,array[i+1]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
console.log(array);
你应该 运行 你的循环少 1 次迭代,因为你用 i + 1 调用 insert() 函数;
尝试在 insertionSort 函数中反向遍历数组:
var insertionSort = function(array) {
for (var i = array.length - 1; i >= 0; i--) {
insert(array,i,array[i+1]);
}
};
插入排序函数不工作,错误是:一个函数花费的时间太长运行。也许您的代码有误?
// this function
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
var insertionSort = function(array) {
for(var i = 0; i < array.length ; i++)
{
insert(array,i,array[i+1]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
println("Array after sorting: " + array);
Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);
您的问题在于将数组位置选择为 [i+1]
和 [j+1]
改变
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
进入
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j > 0 && array[j-1] > value;
j--)
{
array[j] = array[j-1];
}
array[j] = value;
};
和
insert(array, i, array[i+1]);
进入
insert(array, i, array[i]);
var insert = function(array, rightIndex, value) {
for(var j = rightIndex;
j >= 0 && array[j] > value;
j--)
{
array[j + 1] = array[j];
}
array[j + 1] = value;
};
var insertionSort = function(array) {
for(var i = 0; i < array.length - 1 ; i++)
{
insert(array,i,array[i+1]);
}
};
var array = [22, 11, 99, 88, 9, 7, 42];
insertionSort(array);
console.log(array);
你应该 运行 你的循环少 1 次迭代,因为你用 i + 1 调用 insert() 函数;
尝试在 insertionSort 函数中反向遍历数组:
var insertionSort = function(array) {
for (var i = array.length - 1; i >= 0; i--) {
insert(array,i,array[i+1]);
}
};