입력 문자열을 1차원 배열로 변환하고 선택 정렬을 사용하여 배열을 정렬하는 프로그램을 작성하세요.
아이디어는 다음과 같습니다.
난수 개체를 생성하려면 "난수 생성" 버튼을 클릭하세요.
텍스트 영역을 지우려면 JTextArea의 setText() 메소드를 사용하십시오.
정수의 1차원 배열을 만들고 길이가 10인 공간을 할당합니다.
배열 요소를 초기화하고 Random 클래스의 nextInt() 메서드를 사용하여 50 이내의 난수를 생성한 다음 JTextArea 클래스의append() 메서드를 사용하여 텍스트 필드 컨트롤에 배열 요소를 표시합니다.
"정렬" 버튼을 클릭하고 JTextArea 클래스의 setText() 메서드를 사용하여 텍스트 영역을 지웁니다.
이중 레이어 for 루프를 사용하여 두 번째 요소부터 마지막 요소까지 각 패스를 정렬하고, 정렬에 관련된 요소를 순회하고, 최대값에 해당하는 배열 첨자를 찾습니다.
각 정렬 후에 발견된 최대값이 해당 정렬에 포함된 배열의 끝에 있도록 array.length-i 위치와 인덱스(최대값)의 두 숫자를 교환합니다.
for 루프를 사용하여 배열을 순회하고 Random 클래스의 추가 메서드를 사용하여 정렬된 배열 요소를 텍스트 필드에 표시합니다.
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
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;
공개 클래스 SelectSort는 JFrame을 확장합니다.
/**
*
*/
개인 정적 최종 긴 serialVersionUID = 6824538613659403529L;
개인 JPanel contentPane;
/**
* 응용 프로그램을 실행합니다.
*/
공개 정적 무효 메인(String[] args) {
EventQueue.invokeLater(새로운 Runnable() {
공개 무효 실행() {
노력하다 {
SelectSort 프레임 = 새로운 SelectSort();
프레임.setVisible(true);
} 잡기(예외 e) {
e.printStackTrace();
}
}
});
}
/**
* 프레임을 만듭니다.
*/
공개 SelectSort() {
setTitle("선택 정렬을 사용하여 배열을 정렬합니다.");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new 빈Border(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 = 새로운 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 버튼 = new JButton("난수 생성");
버튼.addActionListener(새 ActionListener() {
공공 무효 actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
GridBagConstraints gbc_button = new GridBagConstraints();
gbc_button.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 = 새로운 GridBagConstraints();
gbc_scrollPane_1.insets = 새 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 버튼_1 = new JButton("정렬");
버튼_1.addActionListener(새 ActionListener() {
공공 무효 actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(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;
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("");//텍스트 영역 지우기
정수 인덱스;
for (int i = 1; i < array.length; i++) {
인덱스 = 0;
for (int j = 1; j <= array.length - i; j++) {
if (배열[j] > 배열[인덱스]) {
index = j; // 최대값 찾기
}
}
//array.length-i 위치와 인덱스(최대값)의 두 숫자를 교환합니다.
int temp = array[array.length - i];
배열[array.length - i] = 배열[색인];
배열[색인] = 임시;
}
for (int i = 0; i < array.length; i++) {
textArea2.append(array[i] + " ");//정렬된 배열 요소를 텍스트 영역에 표시합니다.
}
}
}
효과는 그림과 같습니다.