Write a program to convert the input string into a one-dimensional array and sort the array using selection sort.
The idea is as follows:
Click the "Generate Random Number" button to create a Random number object;
Use the setText() method of JTextArea to clear the text area;
Create a one-dimensional array of integers and allocate space with a length of 10;
Initialize the array elements, use the nextInt() method of the Random class to generate a random number within 50, and use the append() method of the JTextArea class to display the array elements in the text field control;
Click the "Sort" button and use the setText() method of the JTextArea class to clear the text area;
Use a double-layer for loop to sort each pass from the second element to the last element, traverse the elements involved in the sort, and find the array subscript corresponding to the maximum value;
Exchange the two numbers at position array.length-i and index (maximum value) so that the maximum value found after each sort is at the end of the array involved in that sort;
Use a for loop to traverse the array, and use the append method of the Random class to display the sorted array elements into the text field.
The code is as follows:
Copy the code code as follows:
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
public class SelectSort extends JFrame {
/**
*
*/
private static final long serialVersionUID = 6824538613659403529L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SelectSort frame = new SelectSort();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public SelectSort() {
setTitle("Sort the array using selection sort");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[] { 0, 0 };
gbl_contentPane.rowHeights = new int[] { 0, 0, 0, 0, 0 };
gbl_contentPane.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
gbl_contentPane.rowWeights = new double[] { 1.0, 0.0, 1.0, 0.0,
Double.MIN_VALUE };
contentPane.setLayout(gbl_contentPane);
JScrollPane scrollPane = new JScrollPane();
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
gbc_scrollPane.insets = new Insets(0, 0, 5, 0);
gbc_scrollPane.fill = GridBagConstraints.BOTH;
gbc_scrollPane.gridx = 0;
gbc_scrollPane.gridy = 0;
contentPane.add(scrollPane, gbc_scrollPane);
textArea1 = new JTextArea();
scrollPane.setViewportView(textArea1);
JButton button = new JButton("Generate random numbers");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
GridBagConstraints gbc_button = new GridBagConstraints();
gbc_button.insets = new Insets(0, 0, 5, 0);
gbc_button.gridx = 0;
gbc_button.gridy = 1;
contentPane.add(button, gbc_button);
JScrollPane scrollPane_1 = new JScrollPane();
GridBagConstraints gbc_scrollPane_1 = new GridBagConstraints();
gbc_scrollPane_1.insets = new Insets(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 = new JTextArea();
scrollPane_1.setViewportView(textArea2);
JButton button_1 = new JButton("Sort");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
GridBagConstraints gbc_button_1 = new GridBagConstraints();
gbc_button_1.gridx = 0;
gbc_button_1.gridy = 3;
contentPane.add(button_1, gbc_button_1);
}
private int[] array = new int[10];
private JTextArea textArea1;
private JTextArea textArea2;
protected void do_button_actionPerformed(ActionEvent e) {
Random random = new Random();//Create a random number object
textArea1.setText("");//Clear the text area
for (int i = 0; i < array.length; i++) {//Initialize array elements
array[i] = random.nextInt(50);//Generate a random number within 50
textArea1.append(array[i]+" ");// Display the array elements in the text area control
}
}
protected void do_button_1_actionPerformed(ActionEvent e) {
textArea2.setText("");//Clear the text area
int index;
for (int i = 1; i < array.length; i++) {
index = 0;
for (int j = 1; j <= array.length - i; j++) {
if (array[j] > array[index]) {
index = j; // Find the maximum value
}
}
//Exchange the two numbers at position array.length-i and index (maximum value)
int temp = array[array.length - i];
array[array.length - i] = array[index];
array[index] = temp;
}
for (int i = 0; i < array.length; i++) {
textArea2.append(array[i] + " ");//Display the sorted array elements into the text area
}
}
}
The effect is as shown in the figure: