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使用选择排序法对数组排序实现代码
-
php选择排序法实现数组排序实例分析,数组实例分析_PHP教程
-
Java使用二分搜索法实现排序数索引功能实例讲解
-
使用java代码和伪代码实现插入排序
-
浅谈JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
-
JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
-
随机化快速排序(快速排序 随机主元)java代码(递归实现)分治法(分而治之)
-
java 使用面向对象方式实现录入学生信息,取出成绩最大值、最小值、平均值、对其进行排序
-
Java实现数组排序总结篇(冒泡,选择,插入,希尔)
-
Java实现数组排序总结篇(冒泡,选择,插入,希尔)