알고리즘 2강을 보며 배운내용
알고리즘의 정의
입출력, 명확성, 유한성, 유효성을 만족하고 효율적이어야 한다
순차탐색
처음부터 순서대로 찾는 방법
이진 탐색
반으로 나눠서 탐색
순서대로 되어있을 때 사용하면 좋다
랜덤이면 사용할 수 없다
대표적인 알고리즘 설계 기법 3가지
- 분할정복(divide and conquer)
- 동적 프로그래밍(dynamic programming)
- 욕심쟁이(greedy)
알고리즘 분석
정확성, 효율성
효율성 분석
메모리 양 => 공간 복잡도(space complexity)
수행 시간 => 시간 복잡도(time complexity)
메모리 적게 쓰고, 수행 시간 짧은게 좋은 알고리즘
보통 시간 복잡도만 따진다(메모리는 구하기 쉬워서)
시간 복잡도
알고리즘 단위 연산의 수행 횟수의 더해서 계산
- 입력 크기 n에 대한 함수 f(n)으로 표현
- 최악의 수행 시간을 시간 복잡도로 사용한다
점근성능
입력 크기 n이 무한대로 커졌을때 결정되는 성능
최고차항만 가져와서 표현 => 정확한 값 아니다
- Big-oh 표기법
- Big-omega 표기법
- Big-theta 표기법
루프의 반복 횟수 조사해서 시간복잡도로 사용
기본 점화식과 폐쇠형
'Computer Science > Algorithm :: 알고리즘' 카테고리의 다른 글
알고리즘 4강 :: 합병 정렬, 선택 문제 (0) | 2022.02.26 |
---|---|
알고리즘 3강 :: 분할정복, 이진탐색, 퀵정렬 (0) | 2022.02.25 |
알고리즘 1강 :: 모든 자료구조 구현은 배열과 연결리스트 (0) | 2022.02.22 |
알고리즘 :: 그래프, 그래프 알고리즘, BFS, DFS (0) | 2022.01.19 |
알고리즘 :: 재귀호출, 수학적 귀납법, 퀵정렬, 재귀함수 디자인 (0) | 2021.12.20 |