miércoles, 9 de marzo de 2016

Ordenamiento por Intercalación Simple

Códigos del Métodos de Ordenamiento por Intercalación

Intercalación Simple:

Descripción

Este procedimiento supone la existencia de dos vectores A y B que contienen en N y M elementos respectivamente, los intercala introduce un tercer vector ordenado llamado C que contendrá N + M elementos. Para que funcione este algoritmo los vectores A y B deben estar previamente ordenados.

Algoritmo

1.- Inicio.

2.- Inicialización de variables auxiliares: I=1, J=1, K=1.

3.- Comparar los elementos correspondientes y determinar cual elemento entra al vector

while I<=N and J<=M

if A[I]<=B[J] then

C[K]=A[I]

I=I+1

K=K+1

else

C[K]=B[J]

J=J+1

K=K+1

4.- Copiar los elementos restantes que han quedado en algun vector:

if I>N then

for X=J,J+1,...M

C[K]=B[X]

K=K+1

else

for X=I,I+1,...N

C[K]=A[X]

K=K+1

5.- Fin del algoritmo

Código:

package insersion;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class inser extends JFrame{
    int a[]=new int[10];
    int i, n, j;
    int max, mayor;
    String salida1="", salida2="";
    JTextArea areaSalida=new JTextArea(6,6);
    JTextArea areaSalida2=new JTextArea(6,6);
    JTextField numero=new JTextField(15);
    public inser(){
        super("Ordenamiento por Insercion");    
        JLabel etiqueta=new JLabel("Cuantos numeros quieres?");
        JLabel etiqueta1=new JLabel("Los numeros son:");
       JButton capturar=new JButton("Capturar");
        capturar.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent evento){
                        captura();
                    }
                }
        );    
        JButton ordenar=new JButton("Ordenar");
        ordenar.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent evento){
                        insertar(a,n);                    
                    }
                }
        );    
        Container contenedor=getContentPane();
        contenedor.setLayout(new FlowLayout());    
        contenedor.add(etiqueta);
        contenedor.add(numero);
        contenedor.add(capturar);
        contenedor.add(etiqueta1);
        contenedor.add(areaSalida);
        contenedor.add(ordenar);
        contenedor.add(areaSalida2);    
        setSize(300,300);
        setVisible(true); }

    public void captura(){    
       if (numero.getText().equals("")){
       JOptionPane.showMessageDialog(null,"Escriba un nombre");
       numero.setText("");
       }    
       else{
           a[i]=Integer.parseInt(numero.getText());
           salida2+=a[i]+"\n";
           i++;
           numero.setText("");
           if (i==5){
               n=i;
               JOptionPane.showMessageDialog(null,"Fin de la captura");            
           }
           areaSalida.setText(salida2);
       }
   }
    public void muestra(int nn,int a3[]){
        for(int k=0;k<nn;k++)
            salida1+=a3[k]+"\n";
        areaSalida2.setText(salida1);
    }
    public void insertar(int lista[], int n){
        int x,i,k;
        for(i=1;i<n;i++){
           x=lista[i];
           k=i-1;
           while(k>=0 && x<lista[k]){
               lista[k+1]=lista[k];
               lista[k]=x;
               k=k-1;          
               if (k==-1) break;          
           }
           lista[k+1]=x;
        }
        muestra(i,lista);
    }
    public static void main(String[] args) {
        inser aplicacion1 = new inser();
        aplicacion1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
    }
}



No hay comentarios:

Publicar un comentario