Backend ——》 Entrenamiento del algoritmo 01 — El orden de los números distintos de cero en la matriz permanece sin cambios y el 0 se mueve al final

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;
                    }

                }
            }
        }
    }
}

<- Mi algoritmo no es bueno. Si no puedo crear una nueva matriz, solo se me ocurre este método estúpido bajo el requisito de operar en la matriz original. Los comentarios son bienvenidos -> 

Supongo que te gusta

Origin blog.csdn.net/nienianzhi1744/article/details/89249361
Recomendado
Clasificación