티스토리 뷰
[문제]
위 그림은 {5,2,4,6,1,3}
이라는 배열을 소트하는 방법을 보여준다.
- 배열의 두번째 인덱스부터 시작하여 시작한 인덱스(검정색 블록) 좌측의 항목 중 자신이 들어가야 할 위치를 판단(소트되도록)하여 이동 한다.
- 좌측의 배열 요소들은 본인보다 좌측에 값이 삽입되어 들어올 경우 한칸씩 우측으로 이동한다. 단, 삽입되어 들어오는 요소(그림에서 검정색 블록)가 있던 인덱스(원래의 위치)까지만 이동한다.
- 마지막 인덱스까지 위 과정을 반복한다.
이와 같은 기능을 하는 소트 프로그램을 작성하시오.
[소스]
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package InsertionSort; public class main_mh { public static void main(String[] args) { int[] numArr = { 5, 2, 4, 6, 1, 3 }; int numTmp = 0, idxTmp = 0; for ( int i = 1; i < numArr.length; i++ ) { for ( int j = i-1; j >= 0; j-- ) { if ( numArr[j] < numArr[i] ) { numTmp = numArr[j+1]; idxTmp = j+1; numArr[idxTmp] = numArr[i]; break; } else if ( j == 0 && numArr[j] > numArr[i] ) { numTmp = numArr[j]; idxTmp = j; numArr[idxTmp] = numArr[i]; } } for ( int j = i; j > idxTmp; j-- ) { if ( j-1 == idxTmp ) { numArr[j] = numTmp; } else { numArr[j] = numArr[j-1]; } } } for ( int num : numArr ) { System.out.print(num + " "); } } } | cs |
[결과]
'알고리즘' 카테고리의 다른 글
[코딩도장] 문자열 짝수 번째 치환 (0) | 2016.10.28 |
---|---|
[코딩도장] Cycle 최대 길이 (0) | 2016.10.27 |
[코딩도장] 문자열 압축 (0) | 2016.10.27 |
[코딩도장] Spiral Array (0) | 2016.10.26 |
[코딩도장] 숫자 개수 카운트 (0) | 2016.10.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 계산기
- 알고리즘
- Delphi
- 작문
- 문법
- System
- VCL
- 왕초보 영어회화 100일의 기적
- 일기
- java
- 독해
- 스택
- 말하기
- 응용
- SysUtils
- ADODB
- 대상
- 자료구조
- 설명
- 여행영어 100일의 기적
- tdataset
- 정렬
- SWT
- Pte
- Reference
- 교육센터
- wfd
- RA
- 상황
- 영어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함