알고리즘의 효율성은 두 가지 매개변수에 따라 달라집니다.
- 시간 복잡도
- 공간 복잡도
시간 복잡도:
시간 복잡도는 총 소요 시간이 아닌 특정 명령어 세트가 실행되는 횟수로 정의됩니다. 소요되는 총 시간은 사용된 컴파일러, 프로세서 속도 등과 같은 일부 외부 요인에 따라 달라지기 때문입니다.
공간 복잡도:
공간 복잡도는 프로그램 실행을 위해 필요한 총 메모리 공간입니다.
둘 다 입력 크기(n)의 함수로 계산됩니다. 여기서 한 가지 중요한 점은 이러한 매개변수에도 불구하고 알고리즘의 효율성은 다음 사항에 따라 달라진다는 것입니다. 자연 그리고 크기 그만큼 입력.
시간 복잡도의 유형:
- 최고의 시간 복잡도: 알고리즘에 더 적은 시간이 걸리거나 최소 시간이 걸리는 입력을 정의합니다. 가장 좋은 경우에는 알고리즘의 하한을 계산합니다. 예: 선형 검색에서는 대용량 데이터의 첫 번째 위치에 검색 데이터가 있을 때 가장 좋은 경우가 발생합니다.
- 평균 시간 복잡도: 평균적인 경우 모든 무작위 입력을 취하고 모든 입력에 대한 계산 시간을 계산합니다.
그런 다음 이를 총 입력 수로 나눕니다. - 최악의 시간 복잡도: 알고리즘에 오랜 시간이 걸리거나 최대 시간이 걸리는 입력을 정의합니다. 최악의 경우 알고리즘의 상한을 계산합니다. 예: 선형 탐색에서는 대용량 데이터의 마지막 위치에 탐색 데이터가 있을 때 최악의 경우가 발생한다.
다음은 마지막 순간에 참조할 수 있는 빠른 개정 시트입니다.
| 연산 | 시간 복잡도 | 공간 복잡도 | ||
|---|---|---|---|---|
| 최상의 | 평균 | 최악의 | 최악의 | |
| 선택 정렬 | 에2) | 에2) | 에2) | 오(1) |
| 버블정렬 | 에) | 에2) | 에2) | 오(1) |
| 삽입 정렬 | 에) | 에2) | 에2) | 오(1) |
| 힙 정렬 | O(n로그(n)) | O(n로그(n)) | O(n로그(n)) | 오(1) |
| 빠른 정렬 | O(n로그(n)) | O(n로그(n)) | 에2) | 에) |
| 병합 정렬 | O(n로그(n)) | O(n로그(n)) | O(n로그(n)) | 에) |
| 버킷 정렬 | O(n +k) | O(n +k) | 에2) | 에) |
| 기수 정렬 | 오(nk) | 오(nk) | 오(nk) | O(n + k) |
| 개수 정렬 | O(n +k) | O(n +k) | O(n +k) | 화살) |
| 쉘 정렬 | O(n로그(n)) | O(n로그(n)) | 에2) | 오(1) |
| 팀 정렬 | 에) | O(n로그(n)) | O(nlog(n)) | 에) |
| 트리 정렬 | O(n로그(n)) | O(n로그(n)) | 에2) | 에) |
| 큐브 정렬 | 에) | O(n로그(n)) | O(n로그(n)) | 에) |
또한 다음을 참조하세요.
- 기사 검색 및 정렬
- 전년도 정렬에 관한 GATE 질문
- 삽입정렬의 시간과 공간 복잡도
- 선택 정렬의 시간 및 공간 복잡도
- 버블정렬의 시간과 공간 복잡도
- 퀵 정렬의 시간과 공간 복잡도
- 병합 정렬의 시간 및 공간 복잡성
- 기수 정렬 알고리즘의 시간 및 공간 복잡도