バックエンド-》アルゴリズムトレーニング01-配列内のゼロ以外の数値の順序は変更されず、0が最後に移動します

public class test {

    public static void main(String[] args) {
        /*定义一个数组*/
        int[] array = new int[]{0, 0, 5, 7, 2, 1, 0};
        for (int i = 0; i < array.length; i++) {
            /*获取到当前位置的数*/
            int arraynow = array[i];
            /*如果当前位置的数为0*/
            if (arraynow == 0) {
                 /*如果当前的数字不是最后一位*/
                if (i != array.length - 1) {
                    /*定义下一次非零数的位置*/
                    int afertNotZoreNum = 0;
                    for (int j = i; j < array.length; j++) {
                        /*遍历,起始位置是数组当前位置,如果下一个数字不是最后一位,且如果下一个数不为零*/
                        if (j + 1 <= array.length - 1 && array[j + 1] != 0) {
                            /*获取到下一个非零数字的位置*/
                            afertNotZoreNum = j + 1;
                            /*跳出循环*/
                            break;
                        }
                    }
                    /*如果下一次非零数位置不是第一位,则将当前为数=0的位置与下一非零位置 的值交换*/
                    if (afertNotZoreNum != 0) {
                        /*将当前为0的位置 赋上 下一位非零位置的值*/
                        array[i] = array[afertNotZoreNum];
                        /*将 下一位非零位置的值设成0*/
                        array[afertNotZoreNum] = 0;
                    }

                }
            }
        }
    }
}

<-私のアルゴリズムは良くありません。新しい配列を作成できない場合は、元の配列を操作する必要がある場合にのみ、この愚かな方法を思い付くことができます。コメントを歓迎します-> 

おすすめ

転載: blog.csdn.net/nienianzhi1744/article/details/89249361