domingo, 13 de noviembre de 2016

METODO BURBUJA


El metodo de la burbuja es uno de los mas simples, es tan facil como comparar todos
los elementos de una lista contra todos, si se cumple que uno es mayor o menor a
otro, entonces los intercambia de posición.
Por ejemeplo, imaginemos que tenemos los siguientes valores:

5 6 1 0 3

Lo que haria una burbuja simple, seria comenzar recorriendo los valores de izq. a derecha, comenzando por el 5. Lo compara con el 6, con el 1, con el 0 y con el 3, si es mayor o menor (dependiendo si el orden es ascendiente o descendiente) se intercambian de posicion. Luego continua con el siguiente, con el 6, y lo compara con todos los elementos de la lista, esperando ver si se cumple o no la misma condicion que con el primer elemento. Asi, sucesivamente, hasta el ultimo elemento de la lista.











import java.io.*;
 
public class burbuja
{
    public static void main(String arg[]) throws IOException
    {
        /*creacion del objeto para leer por teclado*/
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        /*ingreso del tamaño de arreglos*/
        System.out.print("\n Ingrese Numero de Datos a Ingresar : ");
        int tam = Integer.parseInt(in.readLine());
        /*creacion del arreglo*/
        int arr[] = new int[tam];
        System.out.println();
        /*lectura del arreglo*/
        int j = 0;
        for (int i = 0 ; i < arr.length;i++)
        {
            j+=1;
            System.out.print("Elemento " + j + " : ");
            arr[i] = Integer.parseInt(in.readLine());
        }
        burbuja(arr);
    }
 
    static void burbuja(int arreglo[])
    {
        for(int i = 0; i < arreglo.length - 1; i++)
        {
            for(int j = 0; j < arreglo.length - 1; j++)
            {
                if (arreglo[j] < arreglo[j + 1])
                {
                    int tmp = arreglo[j+1];
                    arreglo[j+1] = arreglo[j];
                    arreglo[j] = tmp;
                }
            }
        }
        for(int i = 0;i < arreglo.length; i++)
        {
            System.out.print(arreglo[i]+"\n");
        }
    }
}

jueves, 10 de noviembre de 2016

MÉTODO DE ORDENAMIENTO

Es la operación de arreglar los elementos de un determinado vector en algún orden secuencial
de acuerdo a un criterio de ordenamiento.
El propósito principal de un ordenamiento es el de facilitar las búsquedas
de los miembros del conjunto ordenado.

Al hablar de ordenación nos referimos a mostrar los datos en forma
ordenada de manera que tengan un mejor orden, ya que al momento que
el usuario ingresa los datos estos pueden ser ingresados en forma desordenada.
 

Metodos de Ordenacion

  1. Ordenacion por Seleccion Ordenacion por Seleccion
  2. Ordenacion por Insercion
  3. Búsqueda Secuencial
  4. Búsqueda Binaria
Metodo de Intercambio ó Burbuja

Ordenación por Selección


El proceso de la selección es el siguiente:
1)Captura el Número más pequeño (si se desea ordenar los elementos de
menor a mayor) o el número más grande (si se desea ordenar de mayor a menor).
2)El número capturado es colocado en la primera posición, teniendo en
cuenta que un Array empieza desde la posición Cero.
3)El Proceso se repite para todos los datos sobrantes hasta llegar al
último de ellos.
4)Finalmente los datos quedan ordenados ya sea en forma ascendente o
descendente..



Ordenación por Inserción


El método de ordenación por inserción es similar al proceso típico de
ordenar tarjetas de nombres (cartas de una baraja) por orden alfabético
, que consiste en insertar un nombre en su posición correcta dentro de una
lista o archivo que ya está ordenado. Cada elemento a insertar es considerado uno a la vez,
asimismo se insertan en su posición correspondiente.




Búsqueda Secuencial

Consiste en ingresar un dato a buscar, por lo cual el programa examina cada uno de los elementos del vector.
es decir, el elemento a buscar es comparado con cada uno de
los elementos que contiene el Array.
Si el Array tiene 100 elementos y el dato a Buscar esta en la
posicion 100, entonces se realizara 100 comparaciones puesto que conparará hasta llegar al final del Array,
sin embargo existe la posivilidad que el elemento a buscar
no pertenesca al Array, y la busqueda sera en vano



Búsqueda Binaria


Para poder ejecutar el Método de Búsqueda Binaria, se debe de contar con un Array ordenado. El procedimiento que se realiza es el siguiente:
•EL Programa internamente selecciona el elemento central del Array.
•Si el elemento a buscar es el dato central el proceso termina. •Si el elemento a buscar no coincide con el elemento central, continua la búsqueda:
•Se subdivide en dos partes al Array.
•Si el elemento a buscar es menor que el dato central, entonces selecciona la mitad de la parte izquierda.
•La parte seleccionada se subdivide nuevamente y se repite todo el proceso.
•El proceso termina cuando el dato es encontrado; teniendo en cuenta que el dato a buscar no puede encontrarse en el Array.



Ordenación


int i,j,n;
double aux,x[];System.out.println("Ingrese la cantidad de numeros a leer:");
n= Integer.parseInt(br.readLine());
x= new double[n];
for (i=0;i System.out.println("Elemento["+i+"]:");
x[i]=Double.parseDouble(br.readLine());} for(i=1;i for(j=n-1;j>=i;j--){
if (x[j-1]>x[j]){
aux=x[j-1];
x[j-1]=x[j];
x[j]=aux;}
}
}
System.out.println("Elemento Ordenado");
for (i=0;i System.out.println("Elemento["+i+"]:"+x[i]);}
}
}



Metodo de busqueda


int i,n,band;
double x[],elem;
System.out.println("Ingrese los numeros a leer:");
n=Integer.parseInt(br.readLine());
x=new double[n];
System.out.println("Ingrese los elementos del vector:");
for(i=0;i System.out.println("Elemento["+i+"]:");
x[i]=Double.parseDouble(br.readLine());
} System.out.println("Ingrese el elemento a buscar:");
elem=Double.parseDouble(br.readLine());
band=0;
for(i=0;i if(x[i]==elem){
System.out.println("El elemento encontrado:"+i);
band=1;
}
}
if(band==0){
System.out.println("No se encontro el elemento:");
}
}

jueves, 3 de noviembre de 2016

ORDENAMIENTO

Algoritmo en java del ordenamiento por inserción


La ordenación por inserción es considera como un algoritmo sencillo, este algoritmo tiene la característica de mantener ordenadas las regiones sin ordenar de la matriz. En cada iteración, el siguiente elemento sin ordenar se mueve hacia arriba a una apropiada posición en la región donde están ordenados. Es mucho menos eficiente en grandes listas, que los más algoritmos avanzados como quicksort. Pero tiene algunas ventajas:

-Fácil de implementar
-Eficiente en (bastante) pequeños conjuntos de datos
-Eficiente en conjuntos de datos que ya están ordenados sustancialmente
-Estable (no cambia el orden relativo de los elementos)

En términos abstractos, cada iteración de una ordenación por inserción elimina un elemento de la entrada de datos, insertándolo en la posición correcta en la lista ya ordenada, hasta que no haya elementos en la entrada. La elección del elemento a eliminar de la entrada es arbitraria. 

A continuación el algoritmo por el método de inserción en java

void insertionSort (int[] A) {
 int j;
 for (int i = 1; i < A.length; i++) {
     int a = A[i];
     for (j = i - 1; j >=0 && A[j] > a; j--){
          A[j + 1] = A[j];
     }
     A[j + 1] = a;
 }
}


Método de busqueda binaria


class BusquedaBinaria{
 /**
 * Busca un valor numerico dentro de un arreglo numerico...
 * previamente ordenado usando el metodo de busqueda binaria 
 * 
 * @param arreglo con los elementos; dato a buscar
 * @return posicion del elemento buscado, en caso de no existir retorna -1
    */
 public static int busquedaBinaria(int  vector[], int dato){
  int n = vector.length;
  int centro,inf=0,sup=n-1;
   while(inf<=sup){
     centro=(sup+inf)/2;
     if(vector[centro]==dato) return centro;
     else if(dato < vector [centro] ){
        sup=centro-1;
     }
     else {
       inf=centro+1;
     }
   }
   return -1;
 }

 public static void main(String []args){
  int[]vector ={1,4,7,8,9,14,23,47,56,60,61,63,65,66,68,69,70,73,76,77,79,80,82};
  int valorBuscado = 70;
  System.out.println(busquedaBinaria(vector,valorBuscado));
 }
}