Java使用选择排序法对数组排序实现代码

时间:2021-05-20

编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序。

思路如下:

点击"生成随机数"按钮,创建Random随机数对象;
使用JTextArea的setText()方法清空文本域;
创建一个整型一维数组,分配长度为10的空间;
初始化数组元素,使用Random类的nextInt()方法生成50以内的随机数,使用JTextArea类的append()方法把数组元素显示在文本域控件中;
点击"排序"按钮,使用JTextArea类的setText()方法清空文本域;
使用双层for循环,对从第二个元素到最后一个元素的每一趟排序,对该趟排序所涉及的元素进行遍历,查找最大值对应的数组下标;
交换在位置array.length-i和index(最大值)两个数,使得每趟排序后找到的最大值都在该趟排序所涉及的数列的最后;
使用for循环遍历数组,使用Random类的append方法把排序后的数组元素显示到文本域中。
代码如下:

复制代码 代码如下:
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("使用选择排序法对数组排序");
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("生成随机数");
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("排序");
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();// 创建随机数对象
textArea1.setText("");// 清空文本域
for (int i = 0; i < array.length; i++) {// 初始化数组元素
array[i] = random.nextInt(50);// 生成50以内的随机数
textArea1.append(array[i]+" ");// 把数组元素显示的文本域控件中
}
}

protected void do_button_1_actionPerformed(ActionEvent e) {
textArea2.setText("");// 清空文本域
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;// 查找最大值
}
}
// 交换在位置array.length-i和index(最大值)两个数
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] + " ");// 把排序后的数组元素显示到文本域中
}
}
}

效果如图:

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章