欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-21 22:51:22
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序。 思路如下: 点击"生成随机数"按钮,创建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] + "  ");// 把排序后的数组元素显示到文本域中
        }
    }
}

效果如图:

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