zoukankan      html  css  js  c++  java
  • Java使用选择排序法对数组排序

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

    思路如下:

    1. 点击"生成随机数"按钮,创建Random随机数对象;
    2. 使用JTextAreasetText()方法清空文本域;
    3. 创建一个整型一维数组,分配长度为10的空间;
    4. 初始化数组元素,使用Random类的nextInt()方法生成50以内的随机数,使用JTextArea类的append()方法把数组元素显示在文本域控件中;
    5. 点击"排序"按钮,使用JTextArea类的setText()方法清空文本域;
    6. 使用双层for循环,对从第二个元素到最后一个元素的每一趟排序,对该趟排序所涉及的元素进行遍历,查找最大值对应的数组下标;
    7. 交换在位置array.length-iindex(最大值)两个数,使得每趟排序后找到的最大值都在该趟排序所涉及的数列的最后;
    8. 使用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] + "  ");// 把排序后的数组元素显示到文本域中
            }
        }
    }
    

      效果如图:

  • 相关阅读:
    flask---第一篇
    python 奇技淫巧
    Date
    StringBuffer和StringBuilder
    Object
    String 类中的几个练习--获取指定字符串中,大写字母、小写字母、数字的个数||获取一个字符串中,另一个字符串出现的次数
    String 中常用的几种方法
    final
    String类中"=="、equals和普通类中"=="、equals的比较
    构造方法
  • 原文地址:https://www.cnblogs.com/cysolo/p/3553384.html
Copyright © 2011-2022 走看看