方法一
找到第一个为零的数据,在剩余的数据中找到第一个不为零的数据,然后进行交换位置
let changeArr = function(arr){
for(let i=0;i<arr.length;i++){
if(arr[i]==0){
for(let f = i+1;f<arr.length;f++){
if(arr[f]!=0){
arr[i] = arr[f]
arr[f] = 0
break
}
}
}
}
return arr
}
方式二
异步指针的方式,比较难以理解
let movezero = function(arr){
let tmp = 0
for(let i = 0;i<arr.length;i++){
if(arr[i]!=0){
if(arr[tmp]===0){
arr[tmp] = arr[i]
arr[i]= 0
}
tmp ++
}
}
return arr
}
方式三
利用冒泡排序
let bubble = function(arr){
for(let i =0;i<arr.length;i++){ // 比较的轮次
for(let j=0;j<arr.length-i;j++){ // 需要比较的次数
if(arr[j]===0){
// 进行交换
let temp = arr[j+1] // 每次将0向后进行交换即可
arr[j+1] = arr[j]
arr[j] = temp
}
}
}
}
同理利用js api sort方法(内部也是冒泡排序的实现)
var moveZeroes = function(nums) {
return nums.sort((a,b)=>(b?0:-1))
}
其他还有很多以上是不进行创建新数组的方式