当前位置: 移动技术网 > IT编程>开发语言>Java > Java使用选择排序法对数组排序实现代码

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序。 思路如下: 点击"生成随机数"按钮,创建random随机数对象;使用jtextarea的s

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

思路如下:

点击"生成随机数"按钮,创建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] + "  ");// 把排序后的数组元素显示到文本域中
        }
    }
}

效果如图:

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网