알고리즘 정의와 분석 방법
2021. 5. 24. 15:25ㆍ알고리즘(Algorithm)
1. 알고리즘 정의
"어떤 종류의 문제를 풀기 위한 방법", " 어떤 종류의 문제를 컴퓨터를 사용하여 해걀하기 위한 효율적인 방법"
--> " 주어진 조건에서 컴퓨터를 사용하여 효율적으로 문제를 해결하는 방법"
2. 알고리즘의 표기 방법
O표기법: 알고리즘의 성능을 평가하기 위해 처리해야 할 데이터의 양에 대한 실행 시간을 수학적으로 계산하는 방법, 최악의 성능에 대한 측정 방법
- O(1): 데이터의 양과 무관, 항상 일정한 실행 시간을 가짐
- O(N): 실행시간이 처리해야 하는 데이터 양(N)과 비례함
- O(logN): 데이터 양이 증가하면 실행시간도 증가. 하지만 logN의 그래프를 갖기 때문에 급격한 증가는 아님, 효율적인 검색 알고리즘의 성능
- O(NlogN): 정비례보다 약간 더 증가. 효율적인 정렬 알고리즘의 성능
- O(N^2): 반복문 2개가 중첩, 좋은 알고리즘은 아님
- O(N^3): 반복문 3개가 중접, 좋은 알고리즘 아님
- O(2^N): 데이터 증가에 따라 2^N만큼의 실행 시간 증가. 그닥......
3. 알고리즘에 따른 O 표기법
알고리즘의 성능을 좌우하는 요소는 제어문
- 반복문의 최대 반복 횟수로 계산
- 중첩된 반복문은 중텁문의 최대 반복 횟수를 곱셈하여 계산
- 2개 이상 떨어진 반복문은 그 중 가장 큰 값으로 계산
- if-else문은 알고리즘의 성능에 영향을 미치지 않음
- 재귀 호출은 풀어서 계산 - 재귀함수가 호출된 만큼
4. 알고리즘 최적화
알고리즘의 전체 성능의 O표기법을 구하고, 그 O 표기법의 성능을 높이는 방법으로 최적화 진행
(중첩된 반복문의 횟수를 줄인다 등)
출처:
자바와 함께하는 자료구조의 이해
https://github.com/WeareSoft/tech-interview
https://www.youtube.com/channel/UCJ4SXKMLQucqaxt4A6PonwQ
필수 알고리즘 with 파이썬
'알고리즘(Algorithm)' 카테고리의 다른 글
Binary Search_이진탐색 (0) | 2021.08.10 |
---|---|
Insertion Sort(삽입 정렬) (0) | 2021.08.05 |
Merge Sort(머지 소트) (0) | 2021.08.04 |
Quick Sort(퀵소트) (0) | 2021.08.04 |
Sorting(정렬) (0) | 2021.08.02 |