DEDA_U2_EA

Embed Size (px)

DESCRIPTION

tarea estrcutura de datos

Citation preview

import java.io.*;import java.io.BufferedReader;import java.io.InputStreamReader;public class DEDA_U2_EA_ALDR{ public static void main(String[] args) throws IOException { /* Creamos el numero de arreglos que pida el usuario */ System.out.print("Ingrese el nmero de puntos que se crearn:" ); int var = 0; BufferedReader buffer =new BufferedReader(new InputStreamReader(System.in)); String linea = ""; try{ linea = buffer.readLine(); }catch(Exception e){} var = Integer.parseInt(linea); int array[]; array = new int[var]; int x[]; x = new int[var]; int x1[]; x1 = new int[var]; int y[]; y = new int[var]; int y1[]; y1 = new int[var]; /* Generamos los puntos aleatorios */ for(int c = 0; c< array.length;c++) { int puntox= (int)(Math.random()*1000 + 1); int puntox1 = (int)(Math.random()*1000 + 1); int puntoy =(int)(Math.random()*1000 + 1); int puntoy1 = (int)(Math.random()*1000 + 1); Punto objP = new Punto(puntox,puntox1,puntoy,puntoy1); double resultado = objP.distancia(objP); array[c] = (int)resultado; x[c] = puntox; x1[c] = puntox1; y[c] = puntoy; y1[c] = puntoy1; objP = null; } /* Mostramos los resultados antes de ordenarlos */ System.out.print("Resultados antes de ordenar" ); System.out.println(); for(int i = 0; i < array.length; i++){ System.out.print( array[i]+", Puntos: " + x[i] + ", " + x1[i] + ", " + y[i] + ", " + y1[i]); System.out.println(); } String linea2 = ""; //Se crea un ciclo para crear un men. while(!linea2.equals("Salir")){ //Imprime el men System.out.println("Ingrese un numero(1-4): "); System.out.println("1.- Ordenara la lista con quick sort"); System.out.println("2.- Ordenara la lista con buble sort"); System.out.println("3.- Buscara un valor con metodo secuencial"); System.out.println("4.- Buscara un valor con metodo binario"); System.out.println("Ingrese 'Salir' para cerrar el programa"); //Tenemos la lectura de la cadena que ingrese el usuario try{ linea2 = buffer.readLine(); }catch(Exception e){} //la condicin de salida siempre y cuando lo leido sea Salir if(linea2.equals("Salir")){ }else if(linea2.equals("1")) { quick_srt(array,0,array.length-1,x,x1,y,y1); System.out.print("Datos despues de ordenar" ); System.out.println(); for(int i = 0; i < array.length; i++){ System.out.print( array[i]+", Puntos: " + x[i] + ", " + x1[i] + ", " + y[i] + ", " + y1[i]); System.out.println(); } }else if(linea2.equals("2")){ System.out.println("Despues de bubble" ); int array2[]=burbuja(array); for(int i = 0; i < array2.length; i++){ System.out.print( array2[i]+", Puntos: " + x[i] + ", " + x1[i] + ", " + y[i] + ", " + y1[i]); System.out.println(); } }else if(linea2.equals("3")){ System.out.println("ingrese el nmero que buscar:"); linea2 = buffer.readLine(); int numero = Integer.parseInt(linea2); System.out.println("La distancia "+numero+ " se encuentra(con el metodo secuencial) en la posicin: "+BusquedaSecuencial(array, numero)); }else if(linea2.equals("4")){ System.out.println("ingrese el nmero que buscar:"); linea2 = buffer.readLine(); int numero = Integer.parseInt(linea2); System.out.println("La distancia "+numero+ " se encuentra(con el metodo binario) en la posicin: "+BusquedaBinaria(array, numero)); } } /* Mostramos el mensaje del punto con mayor distancia ya que es el ltimo al ser ordenado. */ burbuja(array); if(var>50){ System.out.println("La mayor distancia en el conjunto de puntos es " + array[array.length-2] + " e involucra al punto: (" + x[array.length-2] + "," + x1[array.length-2] + ") y al punto: (" + y[array.length-2] + "," + y1[array.length-2] + ")"); }else{ System.out.println("La mayor distancia en el conjunto de puntos es " + array[array.length-1] + " e involucra al punto: (" + x[array.length-1] + "," + x1[array.length-1] + ") y al punto: (" + y[array.length-1] + "," + y1[array.length-1] + ")"); } } /* Ordenamos con el metodo quick_sort */ public static void quick_srt(int array[],int low, int n, int x[], int x1[], int y[], int y1[]){ int lo = low; int hi = n; if (lo >= n) { return; } double mid = array[(lo + hi) / 2]; while (lo < hi) { while (lo arreglo[j+1]) { auxiliar = arreglo[j]; arreglo[j] = arreglo[j+1]; arreglo[j+1] = auxiliar; } } } arregloOrdenado = arreglo; return arregloOrdenado; } //metodo de bsqueda Secuencial: public static int BusquedaSecuencial(int vector[], int dato){ for (int i = 0; i < vector.length; ++i) if (vector[i] == dato) return i; return -1; } //metodo de busqueda binaria public static int BusquedaBinaria( int vector[], int dato) { int inicio = 0; int fin = vector.length - 1; int pos; while (inicio