Escriba un programa para convertir la cadena de entrada en una matriz unidimensional y ordenar la matriz mediante clasificación por selección.
La idea es la siguiente:
Haga clic en el botón "Generar número aleatorio" para crear un objeto de número aleatorio;
Utilice el método setText() de JTextArea para borrar el área de texto;
Cree una matriz unidimensional de números enteros y asigne espacio con una longitud de 10;
Inicialice los elementos de la matriz, use el método nextInt() de la clase Random para generar un número aleatorio dentro de 50 y use el método append() de la clase JTextArea para mostrar los elementos de la matriz en el control del campo de texto;
Haga clic en el botón "Ordenar" y utilice el método setText() de la clase JTextArea para borrar el área de texto;
Utilice un bucle for de doble capa para ordenar cada paso desde el segundo elemento hasta el último elemento, recorrer los elementos involucrados en la clasificación y encontrar el subíndice de la matriz correspondiente al valor máximo;
Intercambie los dos números en la posición matriz.longitud-i e índice (valor máximo) para que el valor máximo encontrado después de cada clasificación esté al final de la matriz involucrada en esa clasificación;
Utilice un bucle for para recorrer la matriz y utilice el método append de la clase Random para mostrar los elementos ordenados de la matriz en el campo de texto.
El código es el siguiente:
Copie el código de código de la siguiente manera:
importar java.awt.EventQueue;
importar java.awt.GridBagConstraints;
importar java.awt.GridBagLayout;
importar java.awt.Insets;
importar java.awt.event.ActionEvent;
importar java.awt.event.ActionListener;
importar java.util.Random;
importar javax.swing.JButton;
importar javax.swing.JFrame;
importar javax.swing.JPanel;
importar javax.swing.JScrollPane;
importar javax.swing.JTextArea;
importar javax.swing.border.EmptyBorder;
clase pública SelectSort extiende JFrame {
/**
*
*/
serialVersionUID largo final estático privado = 6824538613659403529L;
Panel de contenido JPanel privado;
/**
* Inicie la aplicación.
*/
público estático vacío principal (String [] argumentos) {
EventQueue.invokeLater(nuevo Ejecutable() {
ejecución pública vacía() {
intentar {
Marco SelectSort = nuevo SelectSort();
frame.setVisible (verdadero);
} captura (Excepción e) {
e.printStackTrace();
}
}
});
}
/**
* Crea el marco.
*/
Ordenar selección pública() {
setTitle("Ordenar la matriz usando ordenación por selección");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
establecerLímites(100, 100, 450, 300);
panel de contenido = nuevo JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(panel de contenido);
GridBagLayout gbl_contentPane = nuevo GridBagLayout();
gbl_contentPane.columnWidths = nuevo int[] { 0, 0 };
gbl_contentPane.rowHeights = nuevo int[] { 0, 0, 0, 0, 0 };
gbl_contentPane.columnWeights = nuevo doble[] { 1.0, Double.MIN_VALUE };
gbl_contentPane.rowWeights = nuevo doble[] { 1.0, 0.0, 1.0, 0.0,
Doble.MIN_VALUE };
contentPane.setLayout(gbl_contentPane);
JScrollPane scrollPane = nuevo JScrollPane();
GridBagConstraints gbc_scrollPane = nuevo GridBagConstraints();
gbc_scrollPane.insets = nuevos Insets(0, 0, 5, 0);
gbc_scrollPane.fill = GridBagConstraints.BOTH;
gbc_scrollPane.gridx = 0;
gbc_scrollPane.gridy = 0;
contentPane.add(scrollPane, gbc_scrollPane);
áreatexto1 = nueva JTextArea();
scrollPane.setViewportView(textArea1);
Botón JButton = new JButton("Generar números aleatorios");
botón.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
do_button_actionPerformed(e);
}
});
GridBagConstraints gbc_button = nuevas GridBagConstraints();
gbc_button.insets = nuevos Inserciones(0, 0, 5, 0);
gbc_button.gridx = 0;
gbc_button.gridy = 1;
contentPane.add(botón, gbc_button);
JScrollPane scrollPane_1 = nuevo JScrollPane();
GridBagConstraints gbc_scrollPane_1 = nuevo GridBagConstraints();
gbc_scrollPane_1.insets = nuevos Inserciones(0, 0, 5, 0);
gbc_scrollPane_1.fill = GridBagConstraints.BOTH;
gbc_scrollPane_1.gridx = 0;
gbc_scrollPane_1.gridy = 2;
contentPane.add(scrollPane_1, gbc_scrollPane_1);
textArea2 = nueva JTextArea();
scrollPane_1.setViewportView(textArea2);
JButton botón_1 = nuevo JButton("Ordenar");
button_1.addActionListener(nuevo ActionListener() {
acción vacía pública realizada (ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
GridBagConstraints gbc_button_1 = nuevas GridBagConstraints();
gbc_button_1.gridx = 0;
gbc_button_1.gridy = 3;
contentPane.add(botón_1, gbc_button_1);
}
matriz int privada [] = nuevo int [10];
privado JTextArea textArea1;
privado JTextArea textArea2;
vacío protegido do_button_actionPerformed (ActionEvent e) {
Random random = new Random();//Crea un objeto de número aleatorio
textArea1.setText("");//Borrar el área de texto
for (int i = 0; i < array.length; i++) {//Inicializar elementos de la matriz
array[i] = random.nextInt(50);//Generar un número aleatorio dentro de 50
textArea1.append(array[i]+" ");// Muestra los elementos de la matriz en el control del área de texto
}
}
vacío protegido do_button_1_actionPerformed (ActionEvent e) {
textArea2.setText("");//Borrar el área de texto
índice entero;
for (int i = 1; i < matriz.longitud; i++) {
índice = 0;
for (int j = 1; j <= matriz.longitud - i; j++) {
if (matriz[j] > matriz[índice]) {
index = j; // Encuentra el valor máximo
}
}
//Intercambia los dos números en la posición array.length-i e index (valor máximo)
int temp = matriz[matriz.longitud - i];
matriz[matriz.longitud - i] = matriz[índice];
matriz[índice] = temporal;
}
for (int i = 0; i < matriz.longitud; i++) {
textArea2.append(array[i] + " ");//Muestra los elementos de la matriz ordenados en el área de texto
}
}
}
El efecto es como se muestra en la figura: