Bueno despues de mas tiempo del esperado, ya tengo el primer codigo(ire modificandolo para que entren nuevos casos) del ejercicio que me ocupa. Muchas gracias por haberme ayudado, me han servido de mucho vuestros consejos. Da gusto como aconsejais a la gente, en otros foros la cosa hubiese sido bastante diferente. Este codigo no tiene en cuenta que los dos vectores sean iguales, pero para el ejercicio que pedian no ha de darse ese caso
Código:
public class VectoresContenidos {
/**
* Metodo para ordenar los vectores del ejercicio
* @param v vector a ordenar
*/
public static void ordenacionBurbuja(int[]v){
int i=0;
int j=0;
int aux=0;
for(i=0;i<v.length;i++){
for(j=0;j<v.length-1;j++){
if(v[j]>v[j+1]){
aux=v[j];
v[j]=v[j+1];
v[j+1]=aux;
}
}
}
}
/**
* Metodo recursivo para ver si un vector esta contenido en el otro
* @param vec1 vector del que se comprobara si esta contenido
* @param vec2 vector del que se comprobara si esta contenido
*/
public static boolean compruebaVectores(int[] vecMayor, int[] vecMenor, int indice){
if(indice>=vecMenor.length){
return true;
}
for(int i=0;i<=vecMayor.length;i++){
if(busquedaBinariaNoRecursiva(vecMayor,vecMenor[indice])){
if(!compruebaVectores(vecMayor,vecMenor,indice+1)){
return false;
}else{
return true;
}
}else{
return false;
}
}
return false;
}
/**
* Metodo no recursivo que busca si un elemento esta dentro de un vector
* @param vector vector donde se busca el elemento
* @param elemento elemento que queremos buscar dentro del vector
*/
public static boolean busquedaBinariaNoRecursiva(int[]vector,int elemento){
int inicio=0;
int fin=vector.length;
int posicion;
while(inicio<=fin){
posicion=(inicio+fin) / 2;
if(vector[posicion]==elemento){
return true;
}else{
if(vector[posicion]<elemento){
inicio=posicion+1;
}else{
fin=posicion-1;
}
}
}
return false;
}
/**
* Metodo Principal
* @param args
*/
public static void main(String[] args) {
int[] vector1={1,2,3,4,6};
int[] vector2={1,2,3,4,6,7};
if(vector1.length>vector2.length){
ordenacionBurbuja(vector1);
if(compruebaVectores(vector1,vector2,0)){
System.out.println("El vector2 esta contenido en el vector1");
}else{
System.out.println("El vector2 no esta contenido en el vector1");
}
}
if(vector1.length<vector2.length){
ordenacionBurbuja(vector2);
if(compruebaVectores(vector2,vector1,0)){
System.out.println("El vector1 esta contenido en el vector2");
}else{
System.out.println("El vector1 no esta contenido en el vector2");
}
}
}
}
De nuevo muchas gracias. Se que es algo chapuzero, pero estoy empezando,
Marcadores