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:
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);
}
}
Acerca de mi

Buscar en el blog
Lista de categorias
- CSS (14)
- Entretenimiento (4)
- HTML (18)
- Iconos (13)
- Inspiración (13)
- JAVA Interfaz (6)
- jQuery (3)
- Lo que NO encontré en Internet (1)
- Programas en C (69)
- Recursos Online (13)
- Trucos (6)
- Widgets (2)







