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

思路如下:

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

  效果如图:

Java使用选择排序法对数组排序的更多相关文章

  1. java:选择排序法对数组排序

    最近想练一练Java的算法,然后碰到LeetCode上一道从排序数组删除重复项的小题,刚开始没看到是从排序数组中,就乱写,其实要是排序树组,就比乱序的感觉上好写多了.然后就想回顾下冒泡法对数组排序,凭 ...

  2. 选择排序法-java详解案例

    /**  * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...

  3. Java 快速排序法 冒泡排序法 选择排序法 插入排序法

    1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...

  4. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  5. 选择排序法、冒泡排序法、插入排序法、系统提供的底层sort方法排序之毫秒级比较

    我的代码: package PlaneGame;/** * 选择排序法.冒泡排序法.插入排序法.系统提供的底层sort方法排序之毫秒级比较 * @author Administrator */impo ...

  6. 【Algorithm】选择排序法

    简单的选择排序法思想: * 首先找到数组中最小的元素,将它和数组第一个元素互换位置(如果第一个元素就是最小那么它就和自己交换). * 其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素互换位置 ...

  7. 【排序基础】1、选择排序法 - Selection Sort

    文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...

  8. C语言实现冒泡排序法和选择排序法代码参考

    为了易用,我编写排序函数,这和直接在主调函数中用是差不多的. 我认为选择排序法更好理解!请注意 i 和 j ,在写代码时别弄错了,不然很难找到错误! 冒泡排序法 void sort(int * ar, ...

  9. CodeForces 489A SwapSort (选择排序法)

    SwapSort 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/A Description In this problem yo ...

随机推荐

  1. FormWindowState.Maximized的陷阱

    MDI父窗体下面有很多子窗体.子窗体打开时都是以FormWindowState.Maximized的属性打开的,但是结果部分如意,部分奇怪. 先贴上单实例的代码: static TestForm _s ...

  2. 添加相应型号和头文件到Keil中

  3. webpack8--删除dist目录,压缩分离后的CSS

    一.删除dist目录 有时候我们需要在打包文件之前删除之前打包的dist目录,如何做? 1.安装new cleanWebpackPlugin(['dist']) npm install clean-w ...

  4. webpack4--热更新

    所谓热更新,就是在浏览器能同步刷新你的代码.webpack 热更新依赖 webpack-dev-server.具体实现步骤如下: 1.局部安装依赖 webpack-dev-server npm ins ...

  5. I/O模型(同步、非同步、阻塞、非阻塞)总结

    I/O:同步(synchronous).异步(asynchronous).阻塞(blocking).非阻塞(nonblocking) 1.I/O内部机制 出于安全考虑,用户程序(用户态)是没办法直接操 ...

  6. SparkR初体验2.0

    突然有个想法,R只能处理百万级别的数据,如果R能运行在Spark上多好!搜了下发现13年SparkR这个项目就启动了,感谢美帝! 1.你肯定得先装个spark吧.看这:Spark本地模式与Spark ...

  7. 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

    题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在ACSII码范围内. 输出描述: 输出范围在( ...

  8. TI webench 一款不错的软件

      之前在一些电子论坛的网站看到过关于TI webench的介绍,今天适用了一下,确实功能很强大,设计内容可以输入你所要设计的内容,包括下面内容: 下图是笔者设计的一个FPGA供电系统,采用5V输入, ...

  9. 关于Unity中的世界坐标和局部坐标

    1.物体的局部坐标的方向(物体自身的方向) transform.forward. transform.right. transform.up 2.物体的世界坐标的方向 Vector3.forward. ...

  10. 嵌入式开发之uart---编程

    下位机往上位机发送串口数据都是漫漫的这个包,但是win上位机往下位机发数据时,得分包大小,下位机收到的不一从1到200左右,大部分为100左右 http://bbs.csdn.net/topics/3 ...