Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

JinHee's Board

바뀌기 전 정처기 알고리즘 기출문제를 Java로 풀기 (2) 본문

메모/코딩 문제풀기&다시보기

바뀌기 전 정처기 알고리즘 기출문제를 Java로 풀기 (2)

JinHee Han 2020. 10. 1. 19:50

*정보처리기사 시험이 바뀌기 전에 기출문제로 나왔던 알고리즘 문제를 푸는 글 입니다.

따라서 현재 바뀐 정보처리기사 시험에는 나오는지 안나오는지 알수 없습니다.

 

[문제]

10개의 숫자를 배열에 저장하고 저장된 숫자를 오름차순으로 정렬되도록 구현하시오.

정렬방식은 선택정렬 입니다.

 

 

[풀기]

 

선택정렬 : 첫번째 숫자를 두번째 숫자부터 마지막 숫자까지 차례대로 비교하여 가장 작은 값은 첫번째로 놓고,

두번째 숫자를 세번재 숫자부터 다시 차례대로 비교하여 정렬하는 방식

 

8, 5, 2, 6, 4 -(8과 5비교)-> 5, 8, 2, 6, 4 -(5와 2 비교)-> 2, 8, 5, 6, 4 -(2와 6비교)->

2, 8, 5, 6, 4 -(2와 4비교)-> 2, 8, 5, 6, 4 ....(비교반복)

 

마지막 숫자를 비교할 차례가 되었을때 반복을 끝낸다.

 

	public void algo2(int[] arr) {
		
		int[] list = new int[arr.length];
		
		for(int i = 0; i < list.length; i++) {
			list[i] = arr[i]; //배열 깊은복사
		}
		
		int startIndex = 0; //시작할 인덱스 변수
		do {
			for(int i = startIndex+1; i < list.length; i++) {
                //값을 비교해서 작은 값인 경우 위치 변경
				if(list[i] < list[startIndex]) { 
					int temp = list[startIndex];
					list[startIndex] = list[i];
					list[i] = temp;
				}
			}
			startIndex += 1; // 인덱스변수값 1증가
            
            //결과를 보기 위한 반복문
			for(int i = 0; i <list.length; i++) {
				System.out.print(list[i] + " ");
			}
			System.out.println();
			
		}while(startIndex < list.length);
        // 배열 길이만큼 반복한다.
	}

 

* 선택정렬은 문제없이 진행되었지만 오름차순 정렬이 완료되었음에도 불구하고

  시작 인덱스값이 배열길이값과 같을때까지 반복하므로 효율적인 프로그램은 아니다.

Comments