\(@^0^@)/

[TDL] 07/13 Today's-Done-List 본문

TDL

[TDL] 07/13 Today's-Done-List

minjuuu 2022. 7. 13. 22:53
728x90

- 유데미 알고리즘 정렬

선택 정렬 최적화 코드

변수 lowest를 생성하여 해당 숫자가 이미 lowest인 경우에는 스왑을 하지 않아도 되므로 해당 로직은 스킵해주면,
기존의 코드보다 속도가 빨라진다.

function swap (arr, idx1, idx2) {
  let temp = arr[idx1];
  arr[idx1] = arr[idx2];
  arr[idx2] = temp;
}

function selectionSort (arr) {
  for(let i = 0; i < arr.length; i++) {
    let lowest = i;
    for (let j = i+1; j < arr.length; j++) {
      if(arr[j] < arr[lowest]) {
        lowest = j;
      }
    }
    if(i !== lowest) swap(arr, i, lowest)
  }
  return arr;
}

삽입 정렬 (Insertion Sort)

데이터가 들어와서 계속 재 정렬하고, 실행 중인 정렬을 유지하여 최신 상태로 두어야 하는 경우에 적합하다.

 

function insertionSort (arr) {
  for(let i = 1; i < arr.length; i++) {
    let currentVal = arr[i];
    let j;
    for(j = i - 1; j >= 0 && arr[j] > currentVal; j--) {
      arr[j+1] = arr[j]
    }
    arr[j+1] = currentVal;
  }
  return arr;
}

- 제로베이스 알고리즘 정렬

삽입 정렬 (Insertion Sort)

  • 이미 정렬된 데이터 영역과 비교하면서, 자신의 위치를 찾아 요소를 삽입하며 정렬하는 알고리즘
  • 평균 시간 복잡도 : O(n₂)

 

 


오전 회고 (만족도: 5)

오늘은 일찍 도착했는데, 딴짓하느라고...
비도 오고 그래서 그만.. 


- 인프런 함수형 프로그래밍 강의 + 책

함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임이다.
- 부수 효과를 미워한다 => 순수 함수를 만든다.
- 조합성을 강조한다 => 모듈화 수준을 높인다.
- 순수 함수 => 오류를 줄이고 안정성을 높인다.
- 모듈화 수준이 높다 => 생산성을 높인다.

"함수형 프로그래밍은 애플리케이션, 함수의 구성요소, 더 나아가서 언어 자체를 함수처럼 여기도록 만들고, 이러한 함수 개념을 가장 우선순위에 놓는다."
"함수형 사고방식은 문제의 해결 방법을 동사(함수)들도 구성(조합)하는 것"

마이클 포거스 [클로저 프로그래밍의 즐거움]

자바스크립트는 일급 함수이다.

일급 함수란?
- 함수를 언어에서 값으로 다룰 수 있다.
- 런타임에서 언제나 정의할 수 있고, 변수에 담을 수 있고, 인자로 보낼 수 있음.
- 계속 담고 있다가, 내가 원하는 시점에 평가할 수 있는 함수.

함수형 프로그래밍이란?
- 함수를 값으로 다루고,
- 순수 함수를 정의하면서,
- 함수의 평가 시점이 존재하지 않아, 다양한 시점으로 평가를 할 수 있는 프로그래밍 방법.


- 제로베이스 part1 미션 리뷰

리뷰를 살펴보았음. 내일 리팩터링 해보기로.

1번 미션

3번 미션

  • 마우스 이벤트들을 함수형으로 바인딩

4번 미션

  • 클래스형으로도 작성

5번 미션

  • 무한대로 생성되는 로딩을 예외 처리해보자.
  • totalResults 개수를 newsAPI에서 받아와서 구현
  • navigation을 클릭했을 때 page를 초기화하고 리스트를 다시 렌더링 하는 부분

[출처 : 자바스크립트로 알아보는 함수형 프로그래밍 (ES5))

728x90

'TDL' 카테고리의 다른 글

[TDL] 07/16 Today's-Done-List  (0) 2022.07.17
[TDL] 07/15 Today's-Done-List  (0) 2022.07.15
[TDL] 07/12 Today's-Done-List  (0) 2022.07.13
[TDL] 07/11 Today's-Done-List  (0) 2022.07.11
[TDL] 07/10 Today's-Done-List  (0) 2022.07.10