문제
사용자가 점수들을 입력하면 그 점수들을 정렬하는 문제입니다 이를 해결하는 프로그램을 작성하세요
0점~100점 사이의 점수를 입력하세요: 90
0점~100점 사이의 점수를 입력하세요: 89
0점~100점 사이의 점수를 입력하세요: 86
0점~100점 사이의 점수를 입력하세요: 93
0점~100점 사이의 점수를 입력하세요: 95
86 89 90 93 95
0점~100점 사이의 점수를 입력하세요: 3
0점~100점 사이의 점수를 입력하세요: 4
0점~100점 사이의 점수를 입력하세요: 1
0점~100점 사이의 점수를 입력하세요: 2
0점~100점 사이의 점수를 입력하세요: 5
1 2 3 4 5
0점~100점 사이의 점수를 입력하세요: 80
0점~100점 사이의 점수를 입력하세요: 60
0점~100점 사이의 점수를 입력하세요: 100
0점~100점 사이의 점수를 입력하세요: 90
0점~100점 사이의 점수를 입력하세요: 70
60 70 80 90 100
알고리즘 설계
프로그램 시작
점수 입력
점수 정렬
마지막 칸에 가장 큰 값을 저장하면서 한 칸씩 앞으로 영역 좁혀가기
영역의 첫 번째 칸부터 인접한 두 값을 비교하면서
앞이 뒤보다 크면 두 값을 맞바꾸면서 뒤쪽에 큰 값을 저장
정렬 결과 출력
프로그램 종료
| [0] | [1] | [2] | [3] | [4] |
| | | | last |
| 80 | 60 | 100 | 90 | 70 |
| 60 | 80 | 100 | 90 | 70 |
| 60 | 80 | 100 | 90 | 70 |
| 60 | 80 | 100 | 90 | 70 |
| 60 | 80 | 100 | 90 | 70 |
| 60 | 80 | 90 | 100 | 70 |
| 60 | 80 | 90 | 100 | 70 |
| 60 | 80 | 90 | 70 | 100 |
|
| [0] | [1] | [2] | [3] | [4] |
| | | last |
| 60 | 80 | 90 | 70 | 100 |
| 60 | 80 | 90 | 70 | 100 |
| 60 | 80 | 90 | 70 | 100 |
| 60 | 80 | 90 | 70 | 100 |
| 60 | 80 | 90 | 70 | 100 |
| 60 | 80 | 70 | 90 | 100 |
|
| [0] | [1] | [2] | [3] | [4] |
| | last |
| 60 | 80 | 70 | 90 | 100 |
| 60 | 80 | 70 | 90 | 100 |
| 60 | 80 | 70 | 90 | 100 |
| 60 | 70 | 80 | 90 | 100 |
|
| [0] | [1] | [2] | [3] | [4] |
| last |
| 60 | 70 | 80 | 90 | 100 |
| 60 | 70 | 80 | 90 | 100 |
|
// 파일명 : ./Chapter10/ScoreSort.java
import java.util.Scanner;
public class ScoreSort
{
// 프로그램 시작
1 public static void main( String[] args ) {
Scanner scan = new Scanner( System.in );
// 점수 입력
2 int[] scores = { 0, 0, 0 };
for ( int index = 0; index < scores.length; index++ ) {
System.out.print( "0점~100점 사이의 점수를 입력하세요: " );
scores[index]= scan.nextInt();
}
// 점수 정렬
// 마지막 칸에 가장 큰 값을 저장하면서 한 칸씩 앞으로 영역 좁혀가기
3 for ( int last = scores.length - 1; 0 < last; last-- ) {
// 영역의 첫 번째 칸부터 인접한 두 값을 비교하면서
4 for ( int index = 0; index < last; index++ ) {
// 앞이 뒤보다 크면 두 값을 맞바꾸면서 뒤쪽에 큰 값을 저장
5 if ( scores[index]> scores[index+1]) {
int temp = scores[index];
scores[index]= scores[index+1];
6 scores[index+1]= temp;
}
}
}
// 정렬 결과 출력
for ( int score : scores )
System.out.print( score + " " );
scan.close();
// 프로그램 종료
7 }
}
실행 순서 확인