문제
제네릭 메서드를 바탕으로 점수 및 단어를 정렬하는 문제입니다 이를 해결하는 프로그램을 작성하세요
86 89 90
apple banana carrot
알고리즘 설계
프로그램 시작
먼저, 점수 정렬 후 출력
단어 정렬 후 출력
프로그램 종료
정렬 메서드
마지막 칸에 가장 큰 값을 저장하면서 한칸씩 앞으로 영역 좁혀가기
영역의 첫번째 칸부터 인접한 두 값을 비교하면서
앞이 뒤보다 크면 두 값을 맞바꾸기하면서 뒤쪽에 큰 값을 저장
// 파일명 : ./Chapter20/GenericMethod.java
public class GenericMethod
{
// 정렬 메서드
Fb public static <T extends Comparable<T>> void sort( T[] list ) {
// 마지막 칸에 가장 큰 값을 저장하면서 한칸씩 앞으로 영역 좁혀가기
for ( int last = list.length - 1; last >= 0; last-- ) {
// 영역의 첫번째 칸부터 인접한 두 값을 비교하면서
for ( int index = 0; index < last; index++ ) {
// 앞이 뒤보다 크면 두 값을 맞바꾸기하면서 뒤쪽에 큰 값을 저장
if ( list[index].compareTo( list[index + 1]) > 0 ) {
T temp = list[index];
list[index]= list[index + 1];
list[index + 1]= temp;
}
}
}
Fe }
// 프로그램 시작
1 public static void main( String[] args ) {
// 먼저, 점수 정렬 후 출력
Integer[] scores = new Integer[] { 90, 89, 86 };
2 sort( scores );
for( int score : scores )
System.out.print( score + " " );
3 System.out.println();
// 단어 정렬 후 출력
String[] words = new String[] { "carrot", "banana", "apple" };
4 sort( words );
for( String word : words )
System.out.print( word + " " );
// 프로그램 종료
5 }
}
실행 순서 확인