프론트엔드 공부를 하면서 javascript에 익숙해져야 한다는 생각이 들면서 javascript로 알고리즘 공부를 병행하기로 했다.
알고리즘으로 꾸준하게 코드를 작성하다 보면 js에 빨리 익숙해 질 수 있을 것같다!
(출처: 위키피디아_삽입정렬)
삽입정렬은 배열에서 0번은 두고 1번부터 앞에 요소들과 비교해서 자신의 위치를 설정해 놓는 것이다.
예시로 [1,3,2,5]로 설명하겠다.
삽입정렬은 2중 반복문을 사용하기 때문에 시간 복잡도는 O(N^2)으로 오랜 시간이 걸리는 축에 속한다.
const insertionSort = (arr) => {
for (let i = 1; i < arr.length; i++) {
let currentNum = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > currentNum) {
//앞에 있는 값이 더 크다면 한칸 오른쪽에 넣어준뒤, currentNum을 j자리에 넣고 반복
arr[j + 1] = arr[j];
arr[j] = currentNum;
currentNum = arr[j];
j--;
}
}
return arr;
};