새로운 카드를 뽑으면 그 카드를 크기에 맞춰 정렬
)앞에서부터 차례대로
이미 정렬된 배열 부분과 비교
하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성
하는 알고리즘매 순서마다 해당 원소를 삽입 할 수 있는 위치를 찾아 해당 위치에 삽입
1번째 인덱스 부터 시작
하여 마지막 요소까지 순회
순서
- i는 1부터 시작
- 값이 i인 변수와 i-1인 변수 2개를 준비
- 배열[i]와 배열[i-1]를 비교하여 배열[i]가 더 크면 swap
- i가 0이면 1세트 종료
- 숫자 배열 마지막 요소까지 순회
안정적
정렬되어 있는 경우
나 자료의 수가 적은 정렬
에 효율적 알고리즘
비교적 많은 레코드들의 이동
을 포함배열의 수가 많고 자료의 크기가 클 경우 적합하지 않음
let answer = require("fs")
.readFileSync(__dirname + "/input.txt")
.toString()
.trim()
.split("\n")
.slice(1)
.join()
.split(" ")
.map((i) => Number(i));
for (let i = 1; i < answer.length; i++) {
let idx = i - 1;
let idx2 = i;
while (true) {
if (answer[idx] > answer[idx2]) {
[answer[idx], answer[idx2]] = [answer[idx2], answer[idx]];
}
if (idx === 0) {
break;
} else {
idx = idx - 1;
idx2 = idx2 - 1;
}
}
}
console.log(answer);