반응형
📖 삽입 정렬(Insertion Sort)이란?
삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치에 삽입하는 정렬입니다.
🔎 삽입 정렬의 특징
- 시간 복잡도는 최선의 경우엔 n, 최악의 경우엔 n²
- 알고리즘 자체가 간단하며 안정 정렬(Stable Sort) 임
- 배열이 거의 정렬되어 있는 경우엔 효율적
- 비교적 많은 배열 값들의 이동을 포함하므로 배열 길이가 길어질수록 비효율적
🗝️ GIF로 보는 삽입 정렬 알고리즘
👨🏻💻 JAVA로 구현
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int num[] = new int[N];
for (int i = 0; i < N; i++) {
num[i] = sc.nextInt();
}
System.out.println("정렬 전");
for (int i = 0; i < N; i++) {
System.out.print(num[i]+" ");
}
System.out.println();
// 삽입 정렬
for (int i = 1; i < N; i++) {
int target = num[i];
int j = i - 1;
while (j >= 0 && target < num[j]) {
num[j+1] = num[j];
j--;
}
num[j+1] = target;
}
System.out.println("정렬 후");
for (int i = 0; i < N; i++) {
System.out.print(num[i]+" ");
}
}
}
반응형
'🗝️Algorithm' 카테고리의 다른 글
[Algorithm] 합병 정렬(Merge Sort)이란? (0) | 2021.12.13 |
---|---|
[Algorithm] 퀵 정렬(Quick Sort)이란? (0) | 2021.11.23 |
[Algorithm] 최장 증가 부분 수열(LIS) 알고리즘 (JAVA로 구현) (0) | 2021.10.27 |
[Algorithm] 선택 정렬(Selection Sort) 이란? (0) | 2021.10.17 |
[Algorithm] 순열(Permutation)과 조합(Combination) JAVA로 구현하기 (순열, 중복순열, 조합, 중복조합) (0) | 2021.10.17 |