2011-02-09 3 views

답변

3

예. 모든 임계 값이 지정된 임계 값보다 작은 지 알기 위해서는 모든 숫자를 최소한 한 번 검사해야합니다. 숫자가 정렬되지 않으면 그 숫자에 대해 추측 할 수있는 것이 없습니다.

0

예 적어도 선형 시간이 필요합니다. 요소가 검사하지 않고 x보다 작은 지 여부를 알 수있는 방법이 없기 때문에 모든 요소를 ​​한 번 확인해야합니다.

먼저 정렬 한 경우 요소가 x보다 큰 경우 즉시 중지 할 수 있습니다.

+0

정렬 된 경우 "요소가 x보다 크면 즉시 중지"도 선형입니다. 이진 검색을하면'O (log n)'시간을 얻을 수 있습니다. – Chip

+0

우선, 그것을 정렬하는 것은'O (n log n)'입니다. 둘째로, 그것이'O (log n)'로 줄이는 바이너리 검색이 아니라면, 평균적으로 그것은'O (n)'입니다. – jason

0

무제한의 프로세서를 허용하는 경우 거의 일정한 시간 내에 문제를 해결할 수 있습니다. 결과를 연결하는 것은 간단합니다. 고정 된 크기의 청크로 배열을 분할하고 각 청크를 별도의 프로세서에서 처리하기 만하면됩니다. 우리는 하나의 프로세서에 대해 이야기하는 경우

난 당신이 선형 시간이 필요 말하고 싶지만 :

  • 당신은 각 요소를 검사 할 필요가 맞는 경우 술어는 결과에 넣어.
  • 정렬이나 유사하면 도움이되지 않습니다. 다시 한 번 적어도 각 요소를 검사해야하기 때문입니다.
+1

이것은 여전히 ​​선형 시간입니다. 프로세서가 n 개인 경우 청크를 할당하고 최종적으로 전체 응답을 계산하는 데 선형 시간을 소비해야합니다. << n 개의 프로세서를 가지고 있다면, 속도 향상은 단지 일정한 요소 일뿐입니다 (문제의 규모에 따라 유용 할 수도 있습니다). – Peter

관련 문제