Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[코테 알고리즘] 삽입 (Insert) 정렬 본문
삽입(Insert) 정렬
적절한 위치의 왼쪽원소들은 이미 정렬되어있다고 가정
자신이 왼쪽원소보다 크다면 그 곳이 적절한 위치이다.(오름차순일 때)
🕑 시간복잡도: O(N^2)
[ 비교연산횟수: N-1 + N-2 + N-3 + ... + 1 = (N^2)/2번 ]
[ 도중에 왼쪽원소보다 크면 멈출 수 있어서 버블정렬보다 빠르다 ]
[ 비교연산횟수: N-1 + N-2 + N-3 + ... + 1 = (N^2)/2번 ]
[ 도중에 왼쪽원소보다 크면 멈출 수 있어서 버블정렬보다 빠르다 ]
삽입(Insert) 정렬 코드 구현
1. 앞쪽부터 범위를 늘려간다.
2. 범위내 뒤에서부터 왼쪽보다 큰 지를 검사한다.
- 크면 멈춘다.
- 작으면 swap
2. 범위내 뒤에서부터 왼쪽보다 큰 지를 검사한다.
- 크면 멈춘다.
- 작으면 swap
<백준 알고리즘, 11399번>
🎯 인출시간이 짧은 사람이 먼저 인출할 수 있도록 하면 기다리는 시간이 짧아진다.
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] A = new int[N];
int[] S = new int[N];
for(int i = 0; i < N; i++) {
A[i] = scanner.nextInt();
}
for(int i = 0; i < N-1; i++) {
int j = i;
while(j >= 0 && A[j+1] < A[j]) {
int temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
j--;
}
}
S[0] = A[0];
for(int i = 1; i < N; i++) {
S[i] = S[i-1] + A[i];
}
int sum = 0;
for(int i = 0; i < N; i++) {
sum += S[i];
}
System.out.println(sum);
}
}
'코딩 테스트' 카테고리의 다른 글
[코테 알고리즘] 퀵(Quick) 정렬 (0) | 2022.12.14 |
---|---|
[코테 알고리즘] 선택(Select) 정렬 (0) | 2022.12.14 |
[코테 알고리즘] 객체비교에 사용되는 인터페이스 Comparable (0) | 2022.12.14 |
[코테 알고리즘] 다익스트라 (Dijkstra) 알고리즘 (0) | 2022.12.14 |
[코테 알고리즘] 버블(Bubble) 정렬 (1) | 2022.12.14 |
Comments