2011-02-09 10 views

答えて

3

はい、すべての数値を少なくとも1回調べて、指定されたしきい値より小さいかどうかを確認する必要があります。数字がソートされていない場合は、それらについて推論できるものは何もありません。

0

はい、少なくとも線形時間が必要です。要素がチェックされずにxより小さいかどうかを知る方法はないので、すべての要素を一度チェックする必要があります。

最初にソートした場合、要素がxより大きいとすぐに停止することができます。

+0

ソートされている場合、「要素がxより大きいとすぐに停止する」も線形です。バイナリ検索を行うと 'O(log n)'時間を得ることができます。 – Chip

+0

まず、ソートするには 'O(n log n)'です。第2に、それがソートされているので、平均して 'O(n)'に減らすバイナリ検索を行わない限り、それはまだ 'O(n)'です。 – jason

0

無制限の数のプロセッサを許可している場合は、ほぼ一定の時間内に問題を解決することができます。結果を連結するのは簡単です:固定サイズのチャンクでアレイを分割し、各チャンクを別々のプロセッサで処理します。

私たちは、私はあなたが線形時間が必要でしょうね、単一のプロセッサについて話している場合:

  • あなたはそれぞれの要素を検査する必要があり、それが収まる場合述語が結果にそれを置きます。
  • ソートなどは、もう一度各要素を少なくとも1回は検査する必要があるため、役に立ちません。
+1

これはまだ線形時間です。プロセッサーがn台ある場合は、チャンクを割り当てて、最終的に全体的な答えを把握するために、線形時間をかけなければなりません。 << n個のプロセッサを搭載している場合、高速化は一定の要因にすぎません(もちろん、問題の規模などによってはまだ有効かもしれません)。 – Peter

関連する問題