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);
    }  
}


Respuestas hasta el momento

  1. INFORMACIÓN/TESTIMONIO SOBRE CÓMO OBTUVE UN PRÉSTAMO QUE CAMBIÓ MI VIDA GRACIAS A "loan credit institution"... (loancreditinstitutions00@gmail.com O +393512114999).

    Soy Almohannadi, residente en 2270 Paul Wayne Haggerty Road, New Orleans, LA 70114. Quiero compartir este gran testimonio sobre cómo obtuve mi préstamo de "loan credit institution"... Mi familia fue desalojada de nuestro hogar porque ya no podía pagar las facturas. Esto sucedió después de haber sido estafado por varias empresas en línea y de que tanto mi banco como las cooperativas de crédito que visité me negaran un préstamo. Mis hijos fueron llevados a un centro de acogida y yo me quedé completamente solo en la calle. Hasta que un día, sintiendo mucha vergüenza, me encontré con un antiguo compañero de escuela que me presentó a esta compañía de préstamos temerosa de Dios ("loan credit institution"). Al principio le dije que no estaba dispuesto a correr el riesgo de solicitar otro préstamo en línea, pero él me aseguró que recibiría el préstamo de ellos. Pensándolo mejor, y debido a mi situación de falta de vivienda, decidí intentarlo y solicité el préstamo; llené el formulario de solicitud y cumplí con todos los requisitos. Afortunadamente, y gracias a Dios, me concedieron un préstamo de 85.000,00 dólares a través de esta empresa, y me alegra haber corrido el riesgo y haberlo solicitado. Mis hijos han vuelto conmigo y ahora tengo mi propia casa y mi propio negocio. Toda mi gratitud es para "loan credit institution", una compañía de préstamos enviada por Dios que dio sentido a mi vida cuando había perdido toda esperanza; por eso me prometí a mí mismo seguir contando en Internet cómo obtuve este afortunado préstamo que cambió mi vida. Por lo tanto, recomiendo encarecidamente "loan credit institution" a cualquier persona que necesite un préstamo. Puede ponerse en contacto con esta excelente empresa por correo electrónico en loancreditinstitutions00@gmail.com o llamando o enviando un mensaje por WhatsApp a los números +393512114999 o +393509313766.

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