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

 更新时间:2014年02月18日 16:05:26   作者:  
这篇文章主要介绍了Java使用选择排序法对数组排序实现代码,需要的朋友可以参考下

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

思路如下:

点击"生成随机数"按钮,创建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网络编程中的TCP/UDP详解

    Java网络编程中的TCP/UDP详解

    这篇文章主要介绍了Java网络编程中的TCP/UDP详解,网络编程是指编写运行在多个设备的程序,这些设备都通过网络连接起来,java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节,需要的朋友可以参考下
    2023-12-12
  • PowerJob的TimingStrategyHandler工作流程源码解读

    PowerJob的TimingStrategyHandler工作流程源码解读

    这篇文章主要为大家介绍了PowerJob的TimingStrategyHandler工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Java 判断两个字符串是否由相同的字符组成的实例

    Java 判断两个字符串是否由相同的字符组成的实例

    今天小编就为大家分享一篇Java 判断两个字符串是否由相同的字符组成的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Spring从@Aspect到Advisor使用演示实例

    Spring从@Aspect到Advisor使用演示实例

    这篇文章主要介绍了Spring从@Aspect到Advisor使用演示实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • 从0到1学SpringCloud之SpringCloud gateway网关路由配置示例详解

    从0到1学SpringCloud之SpringCloud gateway网关路由配置示例详解

    Spring Cloud Gateway的目标提供统一的路由方式且基于Filter 链的方式提供了网关基本的功能, 例如:安全、监控、指标和限流 ,这篇文章主要介绍了从0到1学SpringCloud之SpringCloud gateway网关路由配置示例详解,需要的朋友可以参考下
    2023-04-04
  • Java如何确定两个区间范围是否有交集

    Java如何确定两个区间范围是否有交集

    这篇文章主要介绍了Java如何确定两个区间范围是否有交集问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 关于Mybatis实体别名支持通配符扫描问题小结

    关于Mybatis实体别名支持通配符扫描问题小结

    MyBatis可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录,这篇文章主要介绍了Mybatis实体别名支持通配符扫描的问题,需要的朋友可以参考下
    2022-01-01
  • 详解Java豆瓣电影爬虫——小爬虫成长记(附源码)

    详解Java豆瓣电影爬虫——小爬虫成长记(附源码)

    这篇文章主要介绍了详解Java豆瓣电影爬虫——小爬虫成长记(附源码) ,具有一定的参考价值,有需要的可以了解一下。
    2016-12-12
  • SpringBoot中的跨域详解

    SpringBoot中的跨域详解

    这篇文章主要介绍了SpringBoot中的跨域详解,在浏览器上当前访问的网站,向另一个网站发送请求,用于获取数据的过程就是跨域请求,跨域是浏览器的同源策略决定的,是一个重要的浏览器安全策略,需要的朋友可以参考下
    2023-08-08
  • Spring Boot 静态资源处理

    Spring Boot 静态资源处理

    今天小编就为大家分享一篇关于Spring Boot 静态资源处理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论