sábado, 24 de marzo de 2012

MÉTODO DE INSERCIÓN DESCENDENTE


El método de inserción descendente hace prácticamente lo mismo solo que al revés en este caso también se compara el elemento K+1 solo que en lugar de recorrer el elemento mayor comparado del lado derecho se manda del lado izquierdo y así sucesivamente se van comparando todos los números hasta que quedan ordenados de izquierda a derecha pero en este caso de mayor a menor y esta es la forma de distinguir el método de inserción descendente del método de inserción ascendente.

Ejemplo:

Elementos:   5   7   2   5   1   9

Elementos ordenados:   9   7   5   5   2   1

MÉTODO DE INSERCIÓN ASCENDENTE



Bueno como ya se explico arriba, el método de inserción se refiere a la comparación del elemento K+1 con todos los demás elementos ya ordenados y en este caso se detiene cuando encuentra un elemento menor y así sucesivamente todos los elementos mayores se van desplazando una posición a la derecha y el elemento menor toma la posición del elemento K+1 cuando este es recorrido, y este proceso se convierte en una secuencia la cual se detiene hasta tener ordenados todos los elementos comparados, dejándolos de izquierda a derecha ordenados de menor a mayor y así es como funciona y como se distingue el método de inserción ascendente.

Ejemplo:

Elementos:   5   8   3   9   4  2   1

Elementos  ordenados:  1   2   3   4   5   8   9

viernes, 23 de marzo de 2012

CLASE ORDENAMIENTO


public class Ordenamiento extends ArregloUni
{

public void baraja()
{
int i,j,aux;
for(i=1;i<=n-1;i++)
{
aux=a[i];
j=i-1;
while(a[j]>aux && j>0)
{
a[j+1]=a[j];
j--;
}


if(a[j]>aux)
{
a[j+1]=a[j];
a[j]=aux;
}
else
a[j+1]=aux;
}
}


public void baraja2()
{
int i,j,aux;
for(i=1;i<=n-1;i++)
{
aux=a[i];
j=i-1;
while(a[j]<aux && j>0)
{
a[j+1]=a[j];
j--;
}


if(a[j]<aux)
{
a[j+1]=a[j];
a[j]=aux;
}
else
a[j+1]=aux;
}
}





}

CLASE ArregloUni



public class ArregloUni{
protected static int MAX=20;
protected int n;
protected int []a=new int[MAX];


public int cantidad(){
return n;
}


public void ingreso(){
int i,cant;


do{
System.out.print("Cuantos elementos : ");
cant=Leer.datoInt();
} while(cant<1 || cant>MAX);
for(i=0;cant>i;i++){
System.out.print("elemento "+i+":");
a[i]=Leer.datoInt();
}
n=cant;
}


public void reporte(){
int i;


if(n>0){
for(i=0;n>i;i++) System.out.print(a[i]+"\t");
System.out.println("\n");
}
else System.out.println("Esta Vacio");
}






}

CLASE LEER

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class leer{
public static String dato(){
String sdato = "";
try{

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);

sdato = flujoE.readLine();
}
catch(IOException e){
System.err.println("Error: " + e.getMessage());
}
return sdato;
}
public static int datoInt(){
try{
return Integer.parseInt(dato());
}
catch(NumberFormatException e){


        System.out.println("Esta mal introduce un número entero");
        
return Integer.parseInt(dato());

}
}


}





CLASE DemoOrdenamiento



import java.io.*;
import java.util.Scanner;
public class DemoOrdenamiento
{ public static void main(String []args)
{
Ordenamiento datos=new Ordenamiento();
int sw,opcion;


datos.ingreso();
sw=1;
do{


System.out.println("0. Salir");
System.out.println("1. Inserción(menor a mayor)");
System.out.println("2. Inserción(mayor a menor)");
System.out.println("cualquier número distinto al menú te regresará al mismo");
System.out.print("Opcion a elegir");
opcion=leer.datoInt();

switch(opcion)
{
case 0: sw=0;break;
case 1: datos.baraja();break;
case 2: datos.baraja2();break;
}
if(opcion==1)
{
System.out.println("Arreglo despues de ordenar");
datos.reporte();
}


if(opcion==2)
{
System.out.println("Arreglo despues de ordenar");
datos.reporte();
}
}while(sw==1);


}}

VENTAJAS Y DESVENTAJAS

Principal ventaja:
El propósito principal es el facilitar las búsquedas de los miembros del conjunto ordenado.

Desventaja:
En realidad no existe una desventaja si no mas bien todo depende de el método que el usuario decida utilizar.

MÉTODO DE INSERCIÓN



El método de inserción se refiere a un método de ordenamiento el cual se define de la siguiente manera.

El ordenamiento por inserción (insertion sort en inglés) es una manera muy napural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria.

Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.