function moveZero(array) {
const arr = array || [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]
let left = 0;
let right = arr.length - 1
while(left < right) {
if (arr[left] === 0 && arr[right] > 0) {
[arr[left], arr[right]] = [arr[right], arr[left]]
left++
right--
} else if (arr[left] > 0 && arr[right] > 0) {
left++
} else if (arr[right] === 0 || arr[left] === 0) {
right--
}
}
// console.log(arr)
}
moveZero()
const arr2 = []
for (let i = 0; i < 1000;i++) {
if (i % 10 === 0) {
arr2.push(0)
} else {
arr2.push(1)
}
}
console.time("moveZero1")
moveZero(arr2)
console.timeEnd("moveZero1")
function moveZero2(arr) {
let left = 0;
let right = arr.length - 1;
while (left < right) {
while (left < right && arr[left] !== 0) {
left++;
}
while (left < right && arr[right] === 0) {
right--;
}
if (left < right) {
let temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
return arr;
}
console.time("moveZero2")
moveZero2(arr2)
console.timeEnd("moveZero2")
function moveZero3(arr) {
let zeroIndex = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== 0) {
arr[zeroIndex] = arr[i];
zeroIndex++;
}
}
for (let i = zeroIndex; i < arr.length; i++) {
arr[i] = 0;
}
return arr;
}
console.time("moveZero3")
moveZero3(arr2)
console.timeEnd("moveZero3")
function moveZero4(arr) {
let left = 0;
let right = arr.length - 1;
while(left < right) {
while(left < right && arr[left] !== 0) {
left++
}
while(left < right && arr[right] === 0) {
right--
}
if (left <right) {
[arr[left], arr[right]] = [arr[right], arr[left]]
left++
right--
}
}
return arr;
}
console.log(moveZero4(arr2))
console