JAVA 프로그래밍

문제

사용자가 입력한 단어를 알파벳순으로 정렬하는 문제222입니다 이를 해결하는 다음 프로그램을 해석하세요 
단어를 입력하세요: carrot
단어를 입력하세요: banana
단어를 입력하세요: apple
단어를 입력하세요: dog
단어를 입력하세요: egg
apple banana carrot dog egg 

단어를 입력하세요: 
단어를 입력하세요: 
단어를 입력하세요: 사과
단어를 입력하세요: 포도
단어를 입력하세요: 바나나
귤 바나나 배 사과 포도 

단어를 입력하세요: 기차
단어를 입력하세요: 버스
단어를 입력하세요: 택시
단어를 입력하세요: 자동차
단어를 입력하세요: 비행기
기차 버스 비행기 자동차 택시 

알고리즘

프로그램 시작 
   단어 입력
   단어 정렬
      마지막 칸에 가장 큰 값을 저장하면서 한 칸씩 앞으로 영역 좁혀가기
         영역의 첫번째 칸부터 인접한 두 값을 비교하면서
         앞칸 단어가 뒤칸 단어보다 알파벳순으로 뒤면, 두 단어를 맞바꾸기
   정렬된 단어 출력
프로그램 종료
[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/WordSort.java
	import java.util.Scanner;
		 
	public class WordSort
	{
		// 프로그램 시작 
1		public static void main( String[] args ) {
			Scanner scan = new Scanner( System.in );
			// 단어 입력  
2			String[]  words = { "", "", "" };
			for ( int index = 0; index < words.length; index++ ) {
				System.out.print( "단어를 입력하세요: " );
				words[index] = scan.next();
			}
	 
			// 단어 정렬 
			// 마지막 칸에 가장 큰 값을 저장하면서 한 칸씩 앞으로 영역 좁혀가기 
3			for ( int last = words.length - 1; 0 < last; last-- ) {
				// 영역의 첫번째 칸부터 인접한 두 값을 비교하면서  
4				for ( int index = 0; index < last; index++ ) {
					// 앞칸 단어가 뒤칸 단어보다 알파벳순으로 뒤면, 두 단어를 맞바꾸기 
5					if ( words[index].compareTo( words[index+1] ) > 0 ) {
						String temp = words[index];
						words[index] = words[index+1];
6						words[index+1] = temp;
					}
				}
			}
		 
			// 정렬된 단어 출력 
			for ( String word : words )
				System.out.print( word + " " );
			scan.close();
		// 프로그램 종료 
7		}
	}

실행 순서

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