Сообщение от Demath
|
Сообщение от Anna77
|
подскажите, как вставить в массив после каждого его отрицательного элемента элемент, равный нулю
|
Например, так
function Array1(A)
{ var n = A.length;
for (var i = 0; i < n; i++)
{ if (A[i] < 0)
{ for (var j = n-1; j >= i; j--) A[j+1] = A[j];
A[i+1] = 0;
i++; n++;
}
}
return A;
}
alert( Array1([-1,1,2,-6,7,1,6,-7]) );
|
Эта функция не сохраняет входной массив. Если же нужно, чтобы входной массив не изменялся, то так (даже лучше, т.к. без вложенного цикла, сложность алгоритма
O(n))
function Array2(A)
{
var n = A.length, B = [];
for (var i = 0, j = 0; i < n; i++)
{ if (A[i] < 0)
{ B[j++] = A[i]; B[j++] = 0; }
else B[j++] = A[i];
}
return B;
}
alert( Array2([-1,1,2,-6,7,1,6,-7]) );