JAVA 프로그래밍

문제

사용자가 점수들을 입력하면 그 점수들을 정렬하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 
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

프로그램 코드

	// 파일명 : ./Chapter09/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		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다