삽입정렬(Insertion Sort)
1. n번째 원소를 기준으로 잡는다.
2. n-1번째 원소부터 역으로 첫번째 원소까지 검사를 시작한다.
3. 대상이 기준값보다 크면 대상을 뒤로 보낸다. (인덱스+1)
첫번째 원소는 정렬된 것으로 생각하며, 두번째 원소부터 연산을 시작.
정렬된 부분집합과 각 원소를 비교해나아가며 부분집합에 넣는 방식.
package algorithm;
import java.util.Arrays;
public class InsertSort01 {
public static void main(String[] args) {
int[] num = new int[]{5, 4, 2, 1, 3};
for(int i=1; i < num.length; i++) { // 1~4
int key = num[i];
int j = 0;
for(j=i-1; j >= 0; j--) { // j가 (i-1)부터 0까지 감소로직
if(num[j] > key) {
//key값보다 num[j]값이 크면 num[j]값을 오른쪽으로 한칸씩 이동.
num[j+1] = num[j];
}else break;
} num[j+1] = key;
//break문이나 for문을 빠져나온 j는 key값을 넣을 인덱스에 j--가 된 상태이므로에 +1을 해준다.
//(j--된후에 조건식을 만나기 때문에)
}
System.out.println(Arrays.toString(num));
}
}
[1, 2, 3, 4, 5]
'자바 알고리즘' 카테고리의 다른 글
버블정렬(BubbleSort) (0) | 2016.03.30 |
---|---|
선택정렬(SelectionSort) (0) | 2016.03.30 |