Verilen eleman(lar)ın bir dizisini temizleme - sayfa 14

 
Dmitry Fedoseev :

Bu bir anaokulu.

Bu senin tarafından doğru. Aynı kodu çift parametre ile işlemeyi deneyin (her şeyi normalleştirebilirsiniz).

Belki bu süreçte neden bahsettiğimi anlayacaksınız.

 
Stanislav Dray :

Bu senin tarafından doğru. Aynı kodu çift parametre ile işlemeyi deneyin (her şeyi normalleştirebilirsiniz).

Belki bu süreçte neden bahsettiğimi anlayacaksınız.

Hayır, burada bir şey anlamadığınızı tüm sorumluluğumla temin ederim.

 
Dmitry Fedoseev :

Hayır, burada bir şey anlamadığınızı tüm sorumluluğumla temin ederim.

peki o zaman dizi normalleştirmenizde iyi şanslar :)

 
Stanislav Dray :

peki o zaman dizi normalleştirmenizde iyi şanslar :)

Bu yaklaşımla, şans için umut etmek size kalmış.

 

Gerçekten saçmalık yapıyorsun. Filtreleme maliyeti c *O(n). Burada c , toplamada bir miktar sabittir. masraflar. O küçücük. O(n) artık geliştirilemediğinden c olarak ayarlanır. Ne için? O önemsiz. Herhangi bir optimizasyonunuz, bu önemsiz düzeltmenin yalnızca bir kısmını iyileştirecektir.  

Sunulan tüm algoritmaların gerçekten O(n) olup olmadığını düşünmek daha iyi olacaktır. Böyle bir şey test edilmedi.

 
Vasiliy Sokolov :

O önemsiz. Herhangi bir optimizasyonunuz, bu önemsiz düzeltmenin yalnızca bir kısmını iyileştirecektir.

Peki, xs, burada Semko tam tersini kanıtladı - standart numaralandırma algoritmasını ikiden fazla (!) Kere geliştirdi.

şaşırtıcı derecede iyi iş parçacığı

 
TheXpert :

Peki, xs, burada Semko tam tersini kanıtladı - standart numaralandırma algoritmasını ikiden fazla (!) Kere geliştirdi.

şaşırtıcı derecede iyi iplik

ArrayCopy'nin dahili uygulamasının tüm yüküne rağmen, "büyük" bir dizi için blok blok kopyalamanın daha hızlı olduğu ortaya çıktı.
Acaba "spekülatif yürütme" algoritmayı açıkça hızlandırmak için bir şekilde kullanılabilir mi, yoksa sonucu zaten tamamen etkiledi mi?

 

Sergey Dzyublik alınmayın , sadece bilgi için. Dosyanızı indirdim ve işlevimi görmek için çektim. Ekstra kontrollere gerek yoktur.
Şuydu:

 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;
  }

oldu:

 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;
  }
Dosyalar:
 
Konstantin Nikitin :

Sergey Dzyublik alınmayın , sadece bilgi için. Dosyanızı indirdim ve işlevimi görmek için çektim. Ekstra kontrollere gerek yoktur.
Şuydu:

oldu:

Kendini düzeltip beni dışarı mı attın? iyi değil

 
Konstantin Nikitin :

Sergey Dzyublik alınmayın , sadece bilgi için.
Dosyanızı indirdim ve işlevimi görmek için çektim.

En son mevcut dosya kullanılmış, yorumlardan kod değişiklikleri yapılmamıştır.