Elaborar un programa que nos permita ingresar una N cantidad de nombres y usando el método quicksort recursivo los ordene conforme al abecedario.

Captura de muestra:

Método Quicksort Recursivo, Programa en Java

Clase Principal Quicksort:

package quicksort;
//@author Oliver
//http://blog2000.blogspot.mx/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Quicksort extends JFrame implements ActionListener{
    JLabel etiqueta1, metodos;
    JTextField numero;
    JButton boton0, boton1, boton3, salir;
    int limite;
    public Quicksort(){
        // Titulo de pestaña de ventana
        super("Quicksort Recursivo");
        Container contenedor=getContentPane();
        contenedor.setLayout(new FlowLayout());
        inicializar();
        // Titulo principal
        etiqueta1=new JLabel("QUICKSORT RECURSIVO");
        etiqueta1.setBackground(Color.BLACK); // Color de fondo 
        etiqueta1.setForeground(Color.BLACK); // Color de texto
        etiqueta1.setFont(new Font("Consolas", 0, 23)); // Tipo y tamaño de letra
        contenedor.add(etiqueta1);
        
        numero=new JTextField(15);
        contenedor.add(numero);
        
        // Boton para ingresar cadenas
        boton0=new JButton("Ingresa");
        boton0.addActionListener(this);
        boton0.setBackground(Color.WHITE); // Color de fondo 
        boton0.setForeground(Color.BLUE); // Color de texto
        boton0.setFont(new Font("Consolas", 0, 20)); // Tipo y tamaño de letra
        contenedor.add(boton0);
        
        // Boton para mostrar cadenas
        boton3=new JButton("Muestra");
 boton3.addActionListener(this);
        boton3.setBackground(Color.WHITE); // Color de fondo 
        boton3.setForeground(Color.BLUE); // Color de texto
        boton3.setFont(new Font("Consolas", 0, 20)); // Tipo y tamaño de letra
        contenedor.add(boton3);
        
        // Subtitulo Metodo
        metodos=new JLabel("MÉTODO n");
        metodos.setBackground(Color.BLACK); // Color de fondo 
        metodos.setForeground(Color.BLACK); // Color de texto
        metodos.setFont(new Font("Consolas", 0, 20)); // Tipo y tamaño de letra
        contenedor.add(metodos);
        
        // Boton Metodo Quicksort Recursivo
        boton1= new JButton("Método Quicksort R.");
        boton1.setBackground(Color.BLUE); // Color de fondo 
        boton1.setForeground(Color.WHITE); // Color de texto
        boton1.setFont(new Font("Consolas", 0, 20)); // Tipo y tamaño de letra
 contenedor.add(boton1);
        boton1.addActionListener(this);
        
        // JButton que agrega un boton Salir
        salir=new JButton("Salir");
        salir.setBackground(Color.WHITE);
        salir.setForeground(Color.BLUE);
        salir.setFont(new Font("Consolas", 0, 20)); // Tipo y tamaño de letra
        contenedor.add(salir);
        salir.addActionListener(this);
    }
    
    // Main Principal
    public static void main(String[] args) {
        Quicksort aplicacion= new Quicksort();
        // Tamaño de ventana
        aplicacion.setSize(300,300);
        // Visible
        aplicacion.setVisible(true);
        // Centrada
        aplicacion.setLocationRelativeTo(null);
        // Cierre
        aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    // Cantidad de valores a ordenar
    String a[];
    int i=0;
    String salida="<html><p style="color: #000000; font-family: consolas; font-size: 15px;">Orden Original: n";
    
    // Metodo para ingresar valores
    public void actionPerformed(ActionEvent evento){
        if (evento.getSource()==boton0){
            a[i]=numero.getText();
            salida+=" "+a[i];
            i++;
            numero.setText("");
            if(i==a.length){
                JOptionPane.showMessageDialog(null,"<html><p style="color: #000000; font-family: consolas; font-size: 15px;">Fin de Ingreso");
            }
        }
        
        // Accion para salir
        if(evento.getSource().equals(salir)) {
            System.exit(0);
        }
         
        if(evento.getSource()==boton1){
           quicksort_recursivo(a);
        }
        
        if (evento.getSource()==boton3){
            salida+="n<html><p style="color: #000000; font-family: consolas; font-size: 15px;"> Nuevo Orden: n";
            muestra(a);
            }
    }
    
    public void inicializar(){
        String texto = JOptionPane.showInputDialog("<html><p style="color: #000000; font-family: consolas; font-size: 15px;">¿Cuantos nombres deseas ingresar?");
        limite = Integer.parseInt(texto);
        a = new String [ limite];      
    }
    
    // Metodo Quicksort Recursivo
    public void quicksort_recursivo(String a1[]) {
        reduce_recursivo(a1, 0, a1.length - 1);
        JOptionPane.showMessageDialog(null,"<html><p style="color: #000000; font-family: consolas; font-size: 15px;">Cadenas Ordenados");

    }
    // Reduce
    public void reduce_recursivo(String a1[], int ini, int fin) {
        int izq = ini, der = fin, pos = ini;
        String aux="";
        boolean band = true;
        while (band) {
            band = false;
            while ((a1[der].charAt(0) >= a1[pos].charAt(0)) && (pos != der)) der = der - 1; 
            if (pos != der) {
                aux = a1[pos];
                a1[pos] = a1[der];
                a1[der] = aux;
                pos = der;
                while ((a1[izq].charAt(0) < a1[pos].charAt(0)) && (pos != izq)) izq = izq + 1;
                if (pos != izq) {
                    band = true;
                    aux = a1[pos];
                    a1[pos] = a1[izq];
                    a1[izq] = aux;        
                    pos = izq;
                }
            }
        }
        if (ini < (pos - 1)) {
            reduce_recursivo(a1, ini, pos - 1);
        }
        if ((pos + 1) < fin) {
            reduce_recursivo(a1, pos + 1, fin);
        }
    }
     
    // Metodo para mostrar valores
    public void muestra(String a2[]){
        for (int i=0;i<a2.length;i++){
            salida+=a2[i]+" ";
        }
        JOptionPane.showMessageDialog(null,salida);
    }  
}


Deja un comentario

                                                                                                                                                                                                                                                                                                                                                       
Ciudad Blogger

Hola, Bienvenido a Blog 2000!

Puedes seguirnos en las redes sociales o suscribirte al feed.

Blog 2000 Blog 2000 Blog 2000 Blog 2000

¡Suscríbete a nuestro blog!

Recibe en tu correo las últimas noticias del blog. Sólo ingresa tu correo para suscribirte.

Blog 2000