데이터 구조 01 - 복잡 도 3 2 분 찾기
8280 단어 데이터 구조데이터 구조 (저장 성)
함수 인터페이스 정의:
Position BinarySearch( List L, ElementType X );
그 중에서 List 구 조 는 다음 과 같다.
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* */
};
L 은 사용자 가 들 어 오 는 선형 표 입 니 다. 그 중에서 Element Type 요 소 는 >, =,
심판 테스트 프로그램 샘플:
#include
#include
#define MAXSIZE 10
#define NotFound 0
typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* */
};
List ReadInput(); /* , 。 1 */
Position BinarySearch( List L, ElementType X );
int main()
{
List L;
ElementType X;
Position P;
L = ReadInput();
scanf("%d", &X);
P = BinarySearch( L, X );
printf("%d
", P);
return 0;
}
/* */
입력 샘플 1:
5 12 31 55 89 101 31
출력 예시 1:
2
입력 샘플 2:
3 26 78 233 31
출력 예시 2:
0
분석 하 다.
이 문 제 는 2 분 검색 알고리즘 을 쓰 는 함수 인터페이스의 기본 적 인 사고방식 에 문제 가 없다 는 것 이다. 찾 아야 할 값 과 현재 범위 내의 중간 값 을 비교 하면 세 가지 상황 이 있다.
코드 (cpp)
Position BinarySearch( List L, ElementType X ){
Position left = 1;
Position right = L->Last;
while(left<=right){ // ?
Position center = (left+right)/2; //
if(L->Data[center] < X){ // ,X
left = center+1;
}else if(X < L->Data[center]){ // ,X
right = center-1;
}else // ,
return center;
}
return NotFound;
}
매번 범 위 를 절반 으로 줄 이기 때문에 그 복잡 도 는 O (l g n) O (lgn) O (lgn) 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.