Buenas.
Tengo un código que me reordena un vector de una determinada manera, en la mitad izquierda, estarán los numeros menores o iguales que x, y por la derecha, los que son mayores que x.
Por ejemplo: v = {1, 10, 23, 15, 13, 8}; x = 8;
Reordenado (una posibilidad) seria v = {3, 1, 8, 10, 23, 15};
Sé hacerlo si digo que la funcion retorne un array, pero no sé hacerlo sin que retorne nada.
He probado a hacer ésto:
Pero no funciona.
No he hecho muchos ejercicios de recursividad con funciones void (he hecho solo uno, pero apenas lo entiendo), asi que agradecería que me alguien me lo explicase mas o menos
Tengo un código que me reordena un vector de una determinada manera, en la mitad izquierda, estarán los numeros menores o iguales que x, y por la derecha, los que son mayores que x.
Por ejemplo: v = {1, 10, 23, 15, 13, 8}; x = 8;
Reordenado (una posibilidad) seria v = {3, 1, 8, 10, 23, 15};
Sé hacerlo si digo que la funcion retorne un array, pero no sé hacerlo sin que retorne nada.
Código (java) [Seleccionar]
public int[] reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
if(left==right)
return reorganize2(v,x,left,right-1);
else{
int m = (left+right)/2;
if(v[m] <= x){
swap(v,m,left);
return reorganize2(v,x,left+1,right);
}else{
swap(v,m,right-1);
return reorganize2(v,x,left,right-1);
}
}
}
public void swap(int[] v, int i, int j){
int tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
He probado a hacer ésto:
Código (java) [Seleccionar]
public void reorganize2(int[] v, int x, int left, int right){ //left = 0, right = v.length
if(left==right)
reorganize2(v,x,left,right-1);
else{
int m = (left+right)/2;
if(v[m] <= x){
swap(v,m,left);
reorganize2(v,x,left+1,right);
}else{
swap(v,m,right-1);
reorganize2(v,x,left,right-1);
}
}
}
public void swap(int[] v, int i, int j){
int tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
Pero no funciona.
No he hecho muchos ejercicios de recursividad con funciones void (he hecho solo uno, pero apenas lo entiendo), asi que agradecería que me alguien me lo explicase mas o menos