시간 / 공간 복잡 도 분석
4668 단어 C 언어
다음 예 를 들 어 2 분 검색 의 비 재 귀적 실현
int bin_search(int arr[], int key, int left, int right)
{
while (left <= right)
{
int mid = (left&right)+(left^right)>>1;
if (key > arr[mid])
{
left = mid + 1;
}
if (key < arr[mid])
{
right = mid - 1;
}
else
return mid;
}
return -1;
}
2 분 검색 의 실현 메커니즘 은 다음 과 같다. 먼저 찾 아야 할 구간 의 중간 위치 mid = (left + right) / 2 를 확정 한 다음 에 찾 아야 할 요소 key 와 중간 위치 에 있 는 요소 arr [mid] 를 비교 한 결과 다음 과 같은 세 가지 상황 이 있다. (1) key = arr [mid] 는 중간 위치 가 찾 아야 할 위치 임 을 설명 하고 중간 위치 에 있 는 아래 표 mid 로 돌아 가 는 것 이다.(2) key > arr [mid] 는 찾 을 위치 가 후반 부 에 있다 는 것 을 설명 하고 구간 의 왼쪽 아래 에 left = (left + right) / 2 + 1 을 표시 한 다음 새로운 구간 에서 찾 습 니 다.(3) key < arr [mid] 는 찾기 위 치 를 앞부분 에 설명 하고 구간 의 오른쪽 아래 에 right 를 표시 하여 right = (lef + right) / 2 - 1 을 이동 한 다음 새로운 구간 에서 찾 습 니 다.여기 서 시간 복잡 도 는 while 의 순환 횟수 k 이 고 순환 할 때마다 현재 의 절반 의 숫자 를 제외 합 니 다. 모두 n 개의 숫자 가 있다 면 우 리 는 이러한 공식 2 ^ k = n 은 k = log2n 을 얻 을 수 있 기 때문에 시간 복잡 도 는 0 (log2n) 입 니 다.공간 복잡 도 는 0 (1) 이다.
피 보 나치 수열 의 비 귀속 실현
int Fib(int n)
{
if (n < 2)
return n;
int pre = 0;
int cur = 1;
int next;
for (int i = 2; i <= n; i++)
{
next = cur + pre;
pre = cur;
cur = next;
}
return next;
}
상기 코드 에서 for 순환 은 n - 1 회 실행 되 었 기 때문에 이 알고리즘 의 시간 복잡 도 는 0 (n) 이다.공간 복잡 도 는 0 (1) 이다.4. 재 귀 알고리즘 의 시 / 공간 복잡 도 1. 재 귀 알고리즘 의 시간 복잡 도 는 재 귀 총 횟수 매번 재 귀 수 * 2. 재 귀 알고리즘 의 공간 복잡 도 는 대상 의 개수 이다.
다음은 피 보 나치 수열 의 귀환 실현
int Fib(int n)
{
if (n < 2)
return n;
return Fib(n - 1) + Fib(n - 2);
}
int Fib(int n)//
{
return n < 2 ? n : Fib(n - 1) + Fib(n - 2);
}
상기 재 귀 알고리즘 에서 재 귀 의 총 횟수 는 2 ^ n 회 이 고 매번 재 귀 하 는 횟수 는 상수 이 므 로 시간 복잡 도 는 0 (2 ^ n) 입 니 다.최대 n 개의 공간 을 차지 하기 때문에 공간의 복잡 도 는 0 (n) 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.