เขียนโปรแกรมเพื่อแปลงสตริงอินพุตให้เป็นอาร์เรย์หนึ่งมิติและเรียงลำดับอาร์เรย์โดยใช้การเรียงลำดับการเลือก
แนวคิดมีดังนี้:
คลิกปุ่ม "สร้างตัวเลขสุ่ม" เพื่อสร้างวัตถุตัวเลขสุ่ม
ใช้เมธอด setText() ของ JTextArea เพื่อล้างพื้นที่ข้อความ
สร้างอาร์เรย์จำนวนเต็มหนึ่งมิติและจัดสรรพื้นที่ที่มีความยาว 10
เริ่มต้นองค์ประกอบอาร์เรย์ ใช้เมธอด nextInt() ของคลาส Random เพื่อสร้างตัวเลขสุ่มภายใน 50 และใช้เมธอด append() ของคลาส JTextArea เพื่อแสดงองค์ประกอบอาร์เรย์ในตัวควบคุมฟิลด์ข้อความ
คลิกปุ่ม "เรียงลำดับ" และใช้เมธอด setText() ของคลาส JTextArea เพื่อล้างพื้นที่ข้อความ
ใช้ for loop สองชั้นเพื่อเรียงลำดับแต่ละการส่งผ่านจากองค์ประกอบที่สองไปยังองค์ประกอบสุดท้าย สำรวจองค์ประกอบที่เกี่ยวข้องในการเรียงลำดับ และค้นหาตัวห้อยอาร์เรย์ที่สอดคล้องกับค่าสูงสุด
แลกเปลี่ยนตัวเลขสองตัวที่ตำแหน่ง array.length-i และดัชนี (ค่าสูงสุด) เพื่อให้ค่าสูงสุดที่พบหลังจากการเรียงลำดับแต่ละครั้งอยู่ที่ส่วนท้ายของอาร์เรย์ที่เกี่ยวข้องกับการเรียงลำดับนั้น
ใช้ for loop เพื่อสำรวจอาร์เรย์ และใช้วิธีการผนวกของคลาส Random เพื่อแสดงองค์ประกอบอาร์เรย์ที่เรียงลำดับลงในช่องข้อความ
รหัสมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
นำเข้า java.awt.EventQueue;
นำเข้า java.awt.GridBagConstraints;
นำเข้า java.awt.GridBagLayout;
นำเข้า java.awt.Insets;
นำเข้า java.awt.event.ActionEvent;
นำเข้า java.awt.event.ActionListener;
นำเข้า java.util.สุ่ม;
นำเข้า javax.swing.JButton;
นำเข้า javax.swing.JFrame;
นำเข้า javax.swing.JPanel;
นำเข้า javax.swing.JScrollPane;
นำเข้า javax.swing.JTextArea;
นำเข้า javax.swing.border.EmptyBorder;
SelectSort คลาสสาธารณะขยาย JFrame {
-
-
-
serialVersionUID ยาวสุดท้ายแบบคงที่ส่วนตัว = 6824538613659403529L;
เนื้อหา JPanel ส่วนตัว บานหน้าต่าง;
-
* เปิดแอปพลิเคชัน
-
โมฆะคงที่สาธารณะ main (String [] args) {
EventQueue.inurgeLater (เรียกใช้ใหม่ () {
โมฆะสาธารณะวิ่ง () {
พยายาม {
กรอบ SelectSort = SelectSort ใหม่ ();
frame.setVisible(จริง);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
-
-
-
-
* สร้างเฟรม
-
SelectSort สาธารณะ () {
setTitle("จัดเรียงอาร์เรย์โดยใช้การเรียงลำดับการเลือก");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ตั้งค่าขอบเขต(100, 100, 450, 300);
contentPane = JPanel ใหม่();
contentPane.setBorder (EmptyBorder ใหม่ (5, 5, 5, 5));
setContentPane(บานเนื้อหา);
GridBagLayout gbl_contentPane = GridBagLayout ใหม่ ();
gbl_contentPane.columnWidths = ใหม่ int[] { 0, 0 };
gbl_contentPane.rowHeights = ใหม่ int[] { 0, 0, 0, 0, 0 };
gbl_contentPane.columnWeights = ใหม่ double[] { 1.0, Double.MIN_VALUE };
gbl_contentPane.rowWeights = ใหม่ สองเท่า[] { 1.0, 0.0, 1.0, 0.0,
ดับเบิล.MIN_VALUE };
contentPane.setLayout(gbl_contentPane);
JScrollPane scrollPane = JScrollPane ใหม่();
GridBagConstraints gbc_scrollPane = GridBagConstraints ใหม่ ();
gbc_scrollPane.insets = ส่วนแทรกใหม่ (0, 0, 5, 0);
gbc_scrollPane.fill = GridBagConstraints.BOTH;
gbc_scrollPane.gridx = 0;
gbc_scrollPane.gridy = 0;
contentPane.add(scrollPane, gbc_scrollPane);
textArea1 = JTextArea ใหม่ ();
scrollPane.setViewportView(textArea1);
ปุ่ม JButton = JButton ใหม่ ("สร้างตัวเลขสุ่ม");
ปุ่ม addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
do_button_actionดำเนินการ(e);
-
-
GridBagConstraints gbc_button = GridBagConstraints ใหม่ ();
gbc_button.insets = ส่วนแทรกใหม่ (0, 0, 5, 0);
gbc_button.gridx = 0;
gbc_button.gridy = 1;
contentPane.add (ปุ่ม, gbc_button);
JScrollPane scrollPane_1 = JScrollPane ใหม่();
GridBagConstraints gbc_scrollPane_1 = GridBagConstraints ใหม่ ();
gbc_scrollPane_1.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 = JTextArea ใหม่ ();
scrollPane_1.setViewportView(textArea2);
JButton button_1 = JButton ใหม่ ("เรียงลำดับ");
button_1.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
do_button_1_actionดำเนินการ(e);
-
-
GridBagConstraints gbc_button_1 = GridBagConstraints ใหม่ ();
gbc_button_1.gridx = 0;
gbc_button_1.gridy = 3;
contentPane.add(button_1, gbc_button_1);
-
อาร์เรย์ int ส่วนตัว [] = int ใหม่ [10];
JTextArea textArea1 ส่วนตัว;
JTextArea textArea2 ส่วนตัว;
โมฆะที่ได้รับการป้องกัน 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]+" ");// แสดงองค์ประกอบอาร์เรย์ในตัวควบคุมพื้นที่ข้อความ
-
-
โมฆะที่ได้รับการป้องกัน do_button_1_actionPerformed (ActionEvent e) {
textArea2.setText("");//ล้างพื้นที่ข้อความ
ดัชนี int;
สำหรับ (int i = 1; i < array.length; i++) {
ดัชนี = 0;
สำหรับ (int j = 1; j <= array.length - i; j++) {
ถ้า (อาร์เรย์ [j] > อาร์เรย์ [ดัชนี]) {
ดัชนี = j; // ค้นหาค่าสูงสุด
-
-
// แลกเปลี่ยนตัวเลขสองตัวที่ตำแหน่ง array.length-i และดัชนี (ค่าสูงสุด)
int temp = array[array.length - i];
array[array.length - i] = array[index];
อาร์เรย์ [ดัชนี] = อุณหภูมิ;
-
สำหรับ (int i = 0; i < array.length; i++) {
textArea2.append(array[i] + " ");//แสดงองค์ประกอบอาร์เรย์ที่เรียงลำดับแล้วในพื้นที่ข้อความ
-
-
-
เอฟเฟกต์ดังแสดงในรูป: