定義された要素の配列をクリアする。 - ページ 14

 
Dmitry Fedoseev:

幼稚園なんだから。

あなたの側からそう正確に。同じコードを2倍のパラメータで処理してみてください(何でも正規化できます)。

その過程で、私の言いたいことが理解できるかもしれません。

 
Stanislav Dray:

あなたの側からそう正確に。同じコードを2倍のパラメータで処理してみてください(何でも正規化できます)。

その過程で、私が言っていたことが理解できるようになるかもしれません。

いや、責任を持って断言しますが、あなたはここで何かを理解していないのです。

 
Dmitry Fedoseev:

いや、責任を持って断言しますよ、ここであなたが理解していないことがあるのです。

では、配列の正規化を頑張ってください :)

 
Stanislav Dray:

では、配列の正規化を頑張ってください :)

この方法だと、運に期待するのは自分自身です。

 

実際にデタラメをやってますね。 ろ過のコストはc*O(n)です。cは 余分なものに対する何らかの定数です。惨めである。O(n)を改善することはできないので、cを 使うことにしたのでしょう。なぜ?取るに足らないことです。どんな最適化をしても、このごくわずかな補正の一部しか改善されないのです。

提出されたアルゴリズムが本当にO(n)なのかどうか、確認した方がいいんじゃないですか?いずれもテストはしていない。

 
Vasiliy Sokolov:

無視できるレベルです。どのような最適化を行っても、このごくわずかな補正を改善するだけです。

セムコは、その逆で、標準的な検索アルゴリズムを2倍以上(!)に改良したのだ。

意外と、いい分岐なんですよ。

 
TheXpert:

しかし、セムコはその逆で、標準的な検索アルゴリズムを2倍以上(!)改善したのです。

意外と良い枝に仕上がった

その結果、内部ArrayCopy 実装のオーバーヘッドにもかかわらず、「大きな」シーケンスに対するブロック単位のコピーはより高速であることが判明しました。
不思議なのは、「投機的実行」を使って明示的にアルゴリズムを高速化する方法はないのか、それともすでに結果に完全に影響を及ぼしてしまっているのか、ということです。

 

Sergey Dzyublik さん、悪気はないのですが、参考までに。あなたのファイルをダウンロードしたら、自分の機能を見たくなった。無駄なチェックは必要ない。
でした。

template<typename T>
int arrayFilter2(T &data[],const T value) // вариан Nikitin
  {
   int d=ArraySize(data),j=0,y=0;

   for(int i=0; i<d; i++,y++)
     {
      bool res=false;
      if(data[i]==value)// || data[i]==NULL)
        {
         res=true;
         j++;
        }

      if(j>0)
        {
         if(d==y+j)
            break;
         data[y]=data[y+j];
        }
      if(res)
         y--;
     }

   if(d>y)
      ArrayResize(data,y);

   return y;
  }

なった。

template<typename T>
int arrayFilter2(T &data[],const T value=NULL)
  {
     int s, _s = s = ArraySize(data);
     bool res = false;
     
     for(int i=0, j=0; i<_s; i++,j++)
     {
          if( data[i] == value)// || data[i]==NULL)
          {
               res = true;
               s--;
               j--;
               continue;
          }
          if( res )
               data[j] = data[i];
     }
     
     if(s < _s)
          ArrayResize(data, s);
     
     return s;
  }
ファイル:
 
Konstantin Nikitin:

Sergey Dzyublik さん、悪気はないのですが、参考までに。あなたのファイルをダウンロードしたら、自分の機能を見たくなった。無駄なチェックは不要です。
持っていました。

なった。

どうして自分を直して、私を捨てたの?

 
Konstantin Nikitin:

Sergey Dzyublik さん、悪気はないのですが、参考までに。
あなたのファイルをダウンロードしたら、自分の機能を見たくなった。

最後に利用可能なファイルを使用し、コメントからのコード編集は行わなかった。