Ajuste el orden de la matriz para que los números impares vengan antes que los números pares

Descripción del Título

  • Ingrese una matriz de enteros e implemente una función para ajustar el orden de los números en la matriz de modo que todos los números impares estén en la primera mitad de la matriz y todos los números pares estén en la segunda mitad de la matriz

La solución de enumeración general de problemas de algoritmos es incorrecta.

Utilice el método de doble puntero para resolver el problema:
usamos dos punteros, el primer puntero apunta al primer número de la matriz, este puntero solo se moverá hacia atrás y el segundo puntero apunta al último número de la matriz, solo avanzará . Cuando el primer puntero apunta a un número par y el segundo puntero apunta a un número impar, intercambiamos los dos números. El bucle se detiene hasta que el subíndice del primer puntero no es menor que el subíndice del segundo puntero.

    private static void reOrder(int[] arr) {
    
    
        if (arr == null || arr.length == 0) {
    
    
            return;
        }
        int start = 0;
        int end = arr.length - 1;
        while (start < end) {
    
    
            while (start < end && !isEven(arr[start])) {
    
    
                start++;
            }
            while (start < end && isEven(arr[end])) {
    
    
                end--;
            }
            if (start < end) {
    
    
                int temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
            }
        }
        System.out.println(Arrays.toString(arr));
    }

    private static boolean isEven(int num) {
    
    
        return (num & 1) == 0; // 和1相与结果为0,则这个数字是偶数
    }

Supongo que te gusta

Origin blog.csdn.net/liu_12345_liu/article/details/103445356
Recomendado
Clasificación