주어진 요소의 배열 지우기 - 페이지 14

 
Dmitry Fedoseev :

유치원입니다.

그것은 당신의 측면에서 맞습니다. 이중 매개변수를 사용하여 동일한 코드를 처리해 보십시오(무엇이든 정규화할 수 있음).

아마도 그 과정에서 내가 무슨 말을 했는지 이해하게 될 것입니다.

 
Stanislav Dray :

그것은 당신의 측면에서 맞습니다. 이중 매개변수를 사용하여 동일한 코드를 처리해 보십시오(무엇이든 정규화할 수 있음).

아마도 그 과정에서 내가 무슨 말을 했는지 이해하게 될 것입니다.

아니요, 나는 당신이 여기에서 이해하지 못하는 것이 있음을 모든 책임을 지고 보증할 수 있습니다.

 
Dmitry Fedoseev :

아니요, 나는 당신이 여기에서 이해하지 못하는 것이 있음을 모든 책임을 지고 보증할 수 있습니다.

그럼 배열 정규화에 행운을 빕니다 :)

 
Stanislav Dray :

그럼 배열 정규화에 행운을 빕니다 :)

이 접근 방식으로 행운을 바라는 것은 당신에게 달려 있습니다.

 

당신은 정말 헛소리를하고 있습니다. 필터링 비용 c *O(n). 여기서 c 는 더하기의 상수입니다. 경비. 그녀는 작습니다. O(n)은 더 이상 개선할 수 없으므로 c 로 설정합니다. 무엇 때문에? 그녀는 중요하지 않습니다. 모든 최적화는 이 사소한 수정의 일부만 개선할 것입니다.  

제시된 모든 알고리즘이 정말로 O(n)인지 생각해 보는 것이 좋을 것입니다. 어떤 종류의 테스트도 수행되지 않았습니다.

 
Vasiliy Sokolov :

그녀는 중요하지 않습니다. 모든 최적화는 이 사소한 수정의 일부만 개선할 것입니다.

음, x, 여기 Semko는 반대를 증명했습니다. 그는 표준 열거 알고리즘을 두 배(!) 배 이상 향상시켰습니다.

놀랍게도 좋은 스레드

 
TheXpert :

음, x, 여기 Semko는 반대를 증명했습니다. 그는 표준 열거 알고리즘을 두 배(!) 배 이상 향상시켰습니다.

놀랍게도 좋은 스레드

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 는 정보를 위해 공격하지 않습니다.
나는 당신의 파일을 다운로드하고 내 기능을 확인하기 위해 뽑았습니다.

사용 가능한 마지막 파일이 사용되었으며 주석의 코드가 변경되지 않았습니다.