-1

配列にアクセスする時間を短縮するにはどうすればよいですか。配列に2回アクセスして、ユーザーが指定した一連の数字の中で最大の数字を見つけます。

int i=0;
    int max = -1;
    int a_i = -1;

    for (i=0; i<length; i++)
    {   
    a_i = array(a,i);

    if (a_i > max) 
    {
    max = a_i;
    }

    return max;

ペーストビンの完全なコード

助けていただければ幸いです。

4

1 に答える 1

1
  • 簡潔な答え

配列に関する情報がないことを考慮して、すべてのアイテムを反復処理する必要があります。

  • 長い答え

読む前に時間を失うことを受け入れれば、読み取り時のアクセス量を減らすことができます

O(n)挿入する必要がある配列を使用して(すべて) O(n)、最小値を見つける

本当に欲しいのが検索機能に費やす時間を短縮することである場合は、最小限の heapを使用できます。挿入時にいくらかのオーバーヘッドO(n log(n))が発生しますが、必要なのO(1)は検索だけです。

検索する前に配列をソートすることもできます。O(n log n)

于 2012-05-04T15:57:46.647 に答える