한 배열 의 값 은 먼저 작은 것 에서 큰 것 으로 증가 한 후에 큰 것 에서 작은 것 으로 감소 하여 가장 큰 값 을 찾 아 냈 다.
배열 을 지정 하면 그 값 은 작은 것 에서 큰 것 으로 증가 한 후에 큰 것 에서 작은 것 으로 감소 하여 가장 큰 값 을 찾 습 니 다.
사고: 가장 쉬 운 방법 은 두 번 째 값 부터 A [i] > A [i - 1] & A [i] > A [i + 1] 을 만족 시 키 는 지 판단 하 는 것 이다. 만족 하면 i 는 그 최대 치 의 하 표 이다.이 알고리즘 의 복잡 도 는 O (n) 이다.
우 리 는 이러한 알고리즘 을 개선 할 수 있 습 니 다. 이 배열 은 순 서 를 잘 배열 한 것 이기 때문에 우 리 는 2 분 으로 찾 는 사상 을 이용 하여 최대 치 를 더욱 빠르게 찾 을 수 있 습 니 다. 시간 복잡 도 는 O (lg n) 입 니 다.
public int turningPoint(int[] A) {
int m = A.length;
int begin = 0;
int end = m - 1;
int tp = begin + (end - begin)/2;
// the condition "tp > 0 && tp < m -1" makes sure that tp is not at the beginning or the end
while (tp > 0 && tp < m -1) {
if (A[tp] > A[tp + 1] && A[tp] > A[tp -1]) {
return tp;
} else if (A[tp] < A[tp+1]) {
begin = tp + 1;
tp = begin + (end - begin)/2;
} else {
end = tp - 1;
tp = begin + (end - begin)/2;
}
}
return -1;
}
전재 출처 를 밝 혀 주 십시오.http://blog.csdn.net/beiyeqingteng
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 이분 검색 알고리즘 실례 분석 실현본고는 자바 구현 이분 검색 알고리즘을 실례로 다루고 있다.여러분에게 참고할 수 있도록 나누어 드리겠습니다.구체적으로 다음과 같습니다. 1. 전제: 2분 찾기의 전제는 찾아야 할 수조가 이미 정렬되어 있어야 한다는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.