给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

等等,我来

void moveZeroes(int[] nums) {
   // 0 边界处理
        if (nums == null || nums.length ==0)
        {
            return;
        }

        int i = 0 ;         //统计0的个数
        for (int j = 0; j < nums.length; j++)
        {
            if (nums[j] == 0)
                i++;        //  统计0的个数
            else if (i != 0)
            {
                nums[j-i] = nums[j];
                nums[j] = 0;
            }
        }
    }
#include <stdio.h>

void sort_zero(int input[], int size);

int main() {
    int input[] = {0, 1, 3, 0, 12};

    sort_zero(input, 5);

    for (int i=0; i<5; i++) {
        printf("%d ", input[i]);
    }
    printf("\n");
}

void sort_zero(int input[], int size) {
    if (size <= 1) {
        return;
    }
    // 类似冒泡排序的逻辑
    for (int i=size; i>0; i--) {
        for (int j=0; j<i-1; j++) {
            if (input[j] == 0) {
                // 交换
                int tmp = input[j];
                input[j] = input[j+1];
                input[j+1] = tmp;
            }
        }
    }
}