while suma pares numeros matriz impares for con clasificar ciclo arreglos arreglo java recursion

suma - numeros pares en java con arreglos



Cambia los nĂºmeros impares y pares en una matriz (3)

Vi este código en este sitio. Utiliza un método para ordenar una matriz con números pares que salen en el frente y números impares en la parte posterior de la matriz. Me preguntaba si podrías hacer lo mismo, excepto hacer que los números impares aparezcan primero y luego los números pares después? Lo intenté pero fue en vano. Soy nuevo en codificación en Java y quería probar la recursión.

public class Recurse { //i=left //j=right //first i tried to shift the whole thing //have all even numbers pop to the front of array when even public static int[] seperator(int[] arr1, int left, int right){ int temp; if(left>=right) //base case, return array return arr1; else if(arr1[left]%2!=0 && arr1[right]%2==0){//if match, do the swap temp=arr1[left]; arr1[left]=arr1[right]; arr1[right]=temp; return seperator(arr1, left+1, right-1); } else{ if(arr1[right]%2!=0){//if right side is on odd #, then decrease index return seperator(arr1, left, right-1); } if(arr1[left]%2==0){//if left side is on even #, then increase index return seperator(arr1, left+1, right); } } return arr1; } public static void main(String[] args){ //int index=0; int[] arry={70,13,48,19,24,5,7,10}; int[] newarry=seperator(arry, 0, arry.length-1); System.out.print("The new sorted array is: "); for(int i=0; i<newarry.length;i++){ System.out.print(newarry[i]+" "); } }

}

el resultado es este:

The new sorted array is: 70 10 48 24 19 5 7 13


Bueno, si quieres que los números impares vengan primero, reemplaza cualquier %2!=0 con %2==0 y cualquier %2==0 con %2!=0 :

public static int[] seperator(int[] arr1, int left, int right){ int temp; if(left>=right) return arr1; else if(arr1[left]%2==0 && arr1[right]%2!=0){ temp=arr1[left]; arr1[left]=arr1[right]; arr1[right]=temp; return seperator(arr1, left+1, right-1); } else{ if(arr1[right]%2==0){//if right side is on even #, then decrease index return seperator(arr1, left, right-1); } if(arr1[left]%2!=0){//if left side is on odd #, then increase index return seperator(arr1, left+1, right); } } return arr1; }


Prueba algo como:

public static int[] seperator(int[] arr1, int left, int right) { int temp; if (left >= right) // base case, return array return arr1; else if (arr1[left] % 2 == 0 && arr1[right] % 2 != 0) {// if match, do the swap temp = arr1[left]; arr1[left] = arr1[right]; arr1[right] = temp; return seperator(arr1, left + 1, right - 1); } else { if (arr1[right] % 2 == 0) {// if right side is on odd #, then decrease index return seperator(arr1, left, right - 1); } if (arr1[left] % 2 != 0) {// if left side is on even #, then increase index return seperator(arr1, left + 1, right); } } return arr1; } Output: The new sorted array is: 7 13 5 19 24 48 70 10


public class Program { public static void main(String[] args) { int a[] = { 2, 3, 5, 6, 7, 8, 10, 46, 50 }; for (int i = 0; i < a.length - 1; i++) { for (int j = 0 ; j < a.length-1; j++) { if (a[j] % 2 != 0) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }