inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(3주차) 발자국 자료구조 알고리즘

메옹
0

삽입 정렬 (Insertion Sort)

const Insertion = (arr) => {
  for (let i = 1; i < arr.length; i++) {
    let insertingData = arr[i];
    let j;

    for (j = i - 1; j >= 0; j--) {
      if (arr[j] > insertingData) {
        arr[j + 1] = arr[j];
      } else {
        break;
      }

      arr[j + 1] = insertingData;
    }
  }
};

병합 정렬 (Merge Sort)

동적 프로그래밍에서 어떤 방식 더 좋을까

const fibonacci1 = (n) => {
  if (n === 0 || n === 1) return n;
  return fibonacci1(n - 2) + fibonacci1(n - 1);
};

const fibonacci2 = (n, memo) => {
  if (n === 0 || n === 1) return n;

  // 검색
  if (memo[n] === null) {
    memo[n] = fibonacci2(n - 2, memo) + fibonacci2(n - 1, memo);
  }

  return memo[n];
};

const fibonacci3 = (n) => {
  if (n <= 0) return n;

  let table = [0, 1];

  for (let i = 2; i <= n; i++) {
    table[i] = table[i - 2] + table[i - 1];
  }

  return table[n];
};

let start = new Date();

console.log(fibonacci1(40));
let end = new Date();
console.log("피보나치 1 실행 시간 : ", end - start);

start = new Date();
console.log(fibonacci2(40, {}));
end = new Date();
console.log("피보나치 2 실행 시간 : ", end - start);

start = new Date();
console.log(fibonacci3(40, {}));
end = new Date();
console.log("피보나치 3 실행 시간 : ", end - start);

답변 0