2021_05_14

유지원·2021년 5월 14일
0
post-thumbnail

TIL - 콜백함수, 삽입정렬

오늘 정규시간에 토이문제(알고리즘 문제) 속의 힌트로 이런 문장이 나왔다.

" insertionSort 함수의 두 번째 인자로 callback 함수를 받아서 그 함수의 리턴값을 기준으로 요소를 삽입정렬 해 보세요"

여기서 나는 callback 함수와 삽입정렬에 대해서 조금 개념이 헷갈렸다. 그래서 이번시간에는 이 두가지를 정리해 보려고 한다.

1. 콜백함수

자바스크립트에서는 함수를 인자로 받을 수도 있고 함수를 리턴할 수도 있다. 이를 고차함수라고 하고, 이 때 다른 함수의 인자로 전달되는 함수를 콜백함수(callback function)라고 한다. 콜백함수는 다음 순서에 따라 실행된다.

  1. 비동기 요청과 함께 콜백함수를 전달한다.
  2. 비동기 요청이 처리된다.
  3. 전달한 콜백함수가 실행된다.
function hiFunc() {
  setTimeout(function() { //callback function
    console.log('hi');
  }, 2000);
}
function byeFunc() {
  console.log('bye..');
}
hiFunc();
byeFunc();
//bye..
//hi

위의 코드를 실행시키면 bye..가 먼저 출력되고 그 다음 hi가 출력된다.
hiFunc 함수를 먼저 실행했지만 setTimeout으로 인해 함수가 비동기적으로 실행이 되었고 따라서 byeFunc 함수의 실행이 먼저 끝났기 때문에 bye..가 먼저 출력이 된것이다.

2. 삽입정렬

자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입함으로써 정렬을 완성한다.

첫 번째 요소를 기준으로 두 번째 요소부터 검사하면서 두 번째 숫자가 첫 번째 숫자보다 작으면 왼쪽에, 크면 오른쪽에 삽입한다. 세 번째 숫자는 첫 번째, 두 번째 숫자와 비교하여 삽입한다.

다른 정렬에 비해 시간복잡도가 높기 때문에 배열의 길이가 클 경우에는 효과적이지 못한 방법일 수 있다. 그러나 대부분의 값이 정렬되어 있는 배열이 입력될 경우에는 삽입정렬을 사용하는 것이 최고의 성능이 될 수도 있다.





이번시간에는 콜백함수와 삽입정렬에 대해서 공부했다.
다음시간에는 새롭게 리덕스에 대해 공부한다!
오늘은 여기까지~

profile
안녕하세요 유지원입니다

0개의 댓글