Como insertar un elemento en un vector ordenado

Disculpe mi molestia, estoy realizando un método de búsqueda secuencial y quisiera que mi método inserte el elemento buscado si el mismo no se encuentra. Desde ya aclaro que mi vector es ordenado previamente antes de llamar al método de búsqueda.
Mi método es el siguiente:
 private void busqueda(int d)
    {
        boolean h = false;
        for(int i = 0; vector <= d; i = i + 1)
        {
            if (vector == d)
            {
                System.out.println("Elemento encontrado");
                System.out.println("en posicion " + i);
                h = true;
            }
        }
        if (h == false)
        {
            System.out.println("Elemento no encontrado");
            for(int i = 0; i < N; i = i + 1) // aqui es donde trato de insertarlo en caso de no existir.
            {
                if(vector > d) // d es el elemento buscado
                {
                    vector = new int[N + 1]; // trato de definir el vector de 50 a 51 para correr elementos
                    vector[i + 1] = vector;
                    vector = d;
                }
            }
            Búsqueda(d); / /llamo nuevamente al método para que lo busca e imprima posición donde coloco el elemento.
        }    
Mi problema radica en que después de llamar al método nuevamente me da la intentar donde inserto el vector pero me da un error de array fuera de indice, como que no me tomo que al vector le he sumado 1 a su tamaño.
¿Cómo puedo implementar una inserción de un valor entero en un vector ya ordenado?.

1 respuesta

Respuesta
1
Método para verificar que un elemento existe o no en el vector ordenado:
static boolean existe(int [] vector, int valor){
    for( int i=0; i<vector.length; i++ ){
        // Si el valor buscado existe en el vector devuelve true
        if ( vector == valor ){
            return true;
        }
        else if ( vector > valor ){
            // como supuestamente el vector esta ordenado, inmediatamente
             // devolvemos false cuando encontramos el primer valor mayor al
            // numero buscado. Remueve este else if si el vector no esta ordenado.
            return false;
        }
    }
    // Si llega a este significa que no encontro el numero en el vector.
    return false;
}
Y este es el método para insertar:
static int [] insertar(int [] vector, int valor){
    // verificamos primero que el numero exista en el vector
    if ( existe(vector,valor) ){
        // si existe devuelve el vector intacto.
        return vector;
    }
    // hacemos una copia una posicion mas grande que el vector recibido
    int [] newVector = new int[vector.length];
    int i;    for(i=0; i<vector.length; i++){
        // copiamos todos los valores al vector nuevo
        newVector = vector;
    }
    // agregamos el nuevo valor al final del nuevo vector
   newVector = valor;
    // finalmente retornamos el nuevo vector
    return newVector;
}
Espero que te sirva. No olvides finalizar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas