jueves, 8 de octubre de 2015

Métodos Secuencial Ordenada, Secuencial Desordenada y Binario en Java (Por Ivan Luis Jimenez-IvanovicHacker)

ESTE CÓDIGO FUE IMPLEMENTADO POR IVAN LUIS JIMENEZ (IVANOVICHACKER)
SE MANIPULA A TRAVÉS DE UN MENÚ, ANTES DE ESTO SE PIDEN LOS DATOS ENTEROS Y CADENAS DE CARACTERES Y DESPUÉS SE PRESENTA EL MENÚ CON LAS OPCIONES DE ELEGIR EL MÉTODO DE BÚSQUEDA.

EL CÓDIGO ES EL SIGUIENTE:  



package metodos_busqueda;

import java.util.Scanner;
//implementado por Ivan luis Jimenez (IvanovicHacker)
public class Metodos_Busqueda {

    int[] arreglo = new int[5];
    String[] cadena = new String[5];
    int x;

    public void M_Intercambio(int[] arreglo) {

        {
            int temp;
            for (int i = 1; i < arreglo.length; i++) {
                for (int j = 0; j < arreglo.length - 1; j++) {
                    if (arreglo[j] > arreglo[j + 1]) {
                        temp = arreglo[j];
                        arreglo[j] = arreglo[j + 1];
                        arreglo[j + 1] = temp;
                    }
                }
            }
        }
    }

    public void Mostrar_Arreglo(int[] arreglo) {
        for (int d = 0; d < arreglo.length; d++) {
            System.out.print("[" + arreglo[d] + "] ");
        }
        System.out.println("\n");
    }

    public int Busca_Cadena_Desordenado(String cadena[], String Buscar) {
        System.out.println("====================================\n"
                + "B. SECUENCIAL DESORDENADA DE CADENAS\n"
                + "====================================\n");
        for (int i = 0; i < cadena.length; i++) {

            if (cadena[i].compareTo(Buscar) == 0) {
           
                return i;
            }
        }
        return -1;
    }

    void Secuencial_Ordenado_Cadenas(String cadena[], String Buscar) {
        System.out.println("=================================\n"
                + "B. SECUENCIAL ORDENADA DE CADENAS\n"
                + "=================================\n");
        int i = 0;
        while ((i < cadena.length) && (cadena[i].compareTo(Buscar) != 0)) {
            i++;
        }
        if ((i > cadena.length) || (cadena[i].compareTo(Buscar) != 0)) {
            System.out.println("La nombre"+ Buscar +" no esta en el arreglo \n");
        } else {
            System.out.println("El nombre " + Buscar + " se encuentra en la posicion: " + (i + 1) + "\n");
        }
    }

    public int Busqueda_Cadena_Binaria(String cadena[], String Buscar) {
        System.out.println("===============================\n"
                + "    B. BINARIA DE CADENAS\n"
                + "===============================\n");
     
        int centro, inicio = 0, fin = cadena.length - 1;

        while (inicio <= fin) {
            centro = (fin + inicio) / 2;
            if (cadena[centro].compareTo(Buscar) == 0) {
                return centro;
            } else if (cadena[centro].compareTo(Buscar) < 0) {
                fin = centro - 1;
            } else {
                inicio = centro + 1;
            }
        }
        return -1;
    }

    public void Secuencial_Desordenado(int arreglo[], int dato) {
        System.out.println("====================================\n"
                + "B. SECUENCIAL DESORDENADA DE ENTEROS\n"
                + "====================================\n");
        int i;
        for (i = 0; i < arreglo.length; i++) {
            if (arreglo[i] == dato) {
                System.out.println("El elemento " + dato + "  se encuentra en la posicion: " + (i + 1));
                x = 1;
            }
        }
        if (x == 0) {
            System.out.println("El elemento no esta en el arreglo");
        }
    }


    void Secuencial_Ordenado(int arreglo[], int dato) {
        System.out.println("=================================\n"
                + "B. SECUENCIAL ORDENADA DE ENTEROS\n"
                + "=================================\n");
        int i = 0;
        while ((i < arreglo.length) && (dato > arreglo[i])) {
            i++;
        }
        if ((i > arreglo.length) || (dato < arreglo[i])) {
            System.out.println("El elemento no esta en el arreglo \n");
        } else {
            System.out.println("El elemento " + dato + " se encuentra en la posicion: " + (i + 1) + "\n");
        }
    }

    public int Busqueda_Binaria(int arreglo[], int dato) {
        System.out.println("===============================\n"
                + "     B. BINARIA DE ENTEROS\n"
                + "===============================\n");
        int n = arreglo.length;
        int centro, inf = 0, sup = n - 1;
        while (inf <= sup) {
            centro = (sup + inf) / 2;
            if (arreglo[centro] == dato) {
                return centro;
            } else if (dato < arreglo[centro]) {
                sup = centro - 1;
            } else {
                inf = centro + 1;
            }
        }
        return -1;
    }

    public void Perdir_Datos() {
        Scanner datos = new Scanner(System.in);
        System.out.println("TECLEE DATOS ENTEROS");
        for (int i = 0; i < arreglo.length; i++) {
            System.out.println("Teclee dato [" + (i + 1) + "] ");
            int valor = datos.nextInt();
            arreglo[i] = valor;
        }
    }

    public void Pedir_Cadena() {
        Scanner cadenas = new Scanner(System.in);
        System.out.println("TECLEE CADENA DE CARACTERES");
        for (int p = 0; p < cadena.length; p++) {
            try {
                System.out.println("Teclee Cadena [" + (p + 1) + "] ");
                String valor1 = cadenas.nextLine();
                cadena[p] = valor1;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void Menu() {
        Metodos_Busqueda call = new Metodos_Busqueda();
        Scanner xor = new Scanner(System.in);
        Scanner xar = new Scanner(System.in);
        Scanner ready = new Scanner(System.in);
        int respuesta, buscar;
        int read;
        String B_Cadena;
        do {

            System.out.println("SELECCIONE LA OPCION QUE DESEA REALIZAR");
            System.out.println("1) B. Secuencial Desordenada de Enteros");
            System.out.println("2) B. Secuencial Ordenada de Enteros");
            System.out.println("3) B. Binaria de Enteros");
            System.out.println("4) B. Secuencial Desordenada de Cadenas");
            System.out.println("5) B. Secuencial Ordenada de Cadenas");
            System.out.println("6) B. Binaria de Cadenas ");
            System.out.println("7) Salir");
            read = xor.nextInt();
            switch (read) {
                case 1:
                    call.M_Intercambio(arreglo);
                    System.out.println("Ordenando arreglo...\n");
                    call.Mostrar_Arreglo(arreglo);
                    System.out.println("Teclee el numero a buscar:");
                    buscar = xor.nextInt();
                    call.Secuencial_Desordenado(arreglo, buscar);
                    break;
                case 2:
                    call.M_Intercambio(arreglo);
                    System.out.println("Ordenando arreglo...\n");
                    call.Mostrar_Arreglo(arreglo);
                    System.out.println("Teclee el numero a buscar:");
                    buscar = xor.nextInt();
                    call.Secuencial_Ordenado(arreglo, buscar);
                    break;
                case 3:
                    call.M_Intercambio(arreglo);
                    System.out.println("Ordenando arreglo...\n");
                    call.Mostrar_Arreglo(arreglo);
                    System.out.println("Teclee el numero a buscar:");
                    buscar = xor.nextInt();
                    int elem;
                    elem = Busqueda_Binaria(arreglo, buscar);
                    if (elem != -1) {
                        System.out.println("El elemento " + buscar + " se encuentra en la posición " + (elem+1));

                    } else {
                        System.out.println("El elemento no se encuentro en el arreglo ");
                    }
                    break;
                case 4:
                    System.out.println(""
                            + "Teclee la cadena a bucar:");
                    B_Cadena = ready.nextLine();
                    int c = Busca_Cadena_Desordenado(cadena, B_Cadena);
                    if (c != -1) {
                        System.out.println("El nombre " + B_Cadena + " se encuentra en la posición " + (c + 1));

                    } else {
                        System.out.println("El nombre "+B_Cadena+" no se encuentro en el arreglo ");
                    }
                    break;
                case 5:
                     System.out.println(""
                            + "Teclee la cadena a bucar:");
                    B_Cadena = ready.nextLine();
                    call.Secuencial_Ordenado_Cadenas(cadena, B_Cadena);
                    break;
                case 6:
                    System.out.println(""
                            + "Teclee la cadena a bucar:");
                    B_Cadena = ready.nextLine();
                    int h = Busqueda_Cadena_Binaria(cadena, B_Cadena);
                    if (h != -1) {
                        System.out.println("El nombre " + B_Cadena + " se encuentra en la posición " + (h + 1));

                    } else {
                        System.out.println("El nombre "+B_Cadena+" no se encuentro en el arreglo ");
                    }
                    break;
                default:
                    System.out.println("Opcion Invalida!!!");
            }
            System.out.println("Deseas volver a consultar otro metodo? :1 = si, 2 = no");
            respuesta = xar.nextInt();

        } while (respuesta == 1);
        System.out.println("Gracias por utilizar el programa ");
    }

    public static void main(String[] args) {
        Metodos_Busqueda call2 = new Metodos_Busqueda();

        call2.Perdir_Datos();
        call2.Pedir_Cadena();
        call2.Menu();

    }
}

No hay comentarios.:

Publicar un comentario