Optimizasyon sırasında tek seferlik dizi hesaplaması - sayfa 8

 
forexman77 :

Benim için karanlık bir orman olan sınıflarda temelde her şey var. Ancak bazı düşünceler geldi. Ayrı ayrı tarihler ve sayılar içeren bir dizi yapın. Sadece, sıralamadan sonra tarihlerin bulunduğu indeks numarası nasıl alınır, yani ikinci boyutta olan i nasıl alınır?

datetime m[ 215 ][ 1 ];
double d[ 215 ][ 2 ];

m[ 0 ][i]=Dat_DtTm;
d[i][ 0 ]=f1;
d[i][ 1 ]=f2;

Böyle mi yaptı:

datetime m1[ 215 ];
datetime m2[ 215 ];
double d[ 215 ][ 4 ];

m1[i]=Dat_DtTm;
m2[i]=Dat_DtTm;
d[i][ 0 ]=f1;
d[i][ 1 ]= 0.0 ;
d[i][ 2 ]=f2;
d[i][ 3 ]= 0.0 ;

ArraySort (m1, WHOLE_ARRAY , 0 , MODE_DESCEND );

for ( int y= 214 ;y>= 0 ;y--)
   {
  
   for ( int a= 214 ;a>= 0 ;a--)
   {
   if (m1[y]==m2[a])
   {
   d[y][ 1 ]=d[a][ 0 ];
   d[y][ 3 ]=d[a][ 2 ];
   Print ( "m1[y]=" ,m1[y], "d[y][1]=" ,d[y][ 1 ], "d[y][3]=" ,d[y][ 3 ], "y=" ,y);
   break ;
   }
   }
   }
 
forexman77 :

Benim için karanlık bir orman olan sınıflarda temelde her şey var. Ancak bazı düşünceler geldi. Ayrı ayrı tarihler ve sayılar içeren bir dizi yapın. Sadece, sıralamadan sonra tarihlerin bulunduğu indeks numarası nasıl alınır, yani ikinci boyutta olan i nasıl alınır?

datetime m[ 215 ][ 1 ];
double d[ 215 ][ 2 ];

m[ 0 ][i]=Dat_DtTm;
d[i][ 0 ]=f1;
d[i][ 1 ]=f2;

Her şey çok daha kolay. Diyelim ki bir tarih dizimiz var, örneğin datetime m_date[4000] ve herhangi bir türden bir sürü başka dizi: int , string, double .. ve herhangi bir boyut

Hepsi, bu dizilerin i-inci satırındaki verilerin m_date[ i ] tarihine karşılık gelmesiyle bağlantılıdır. Tüm bu dizileri tarihe göre sıralamak gerekir.

Bu dizilerdeki satır sayısı (tarih sayısı) m_dim olsun. ArrayResize'ı maliyetli bir işlem olarak kullanmayacağız , örneğimizde sadece m_dim <= 4000.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000 , 2 ];

// Заполняем массив индексов:
for ( int i =  0 ; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort ( m_index, m_dim, 0, MODE_DECEND);

// Все

Şimdi ilk boyuttan tarihi alıyoruz ve ikincisinden - bu tarihe karşılık gelen dizi indeksi

 
Mislaid :

Her şey çok daha kolay. Diyelim ki bir tarih dizimiz var, örneğin datetime m_date[4000] ve herhangi bir türden bir sürü başka dizi: int , string, double .. ve herhangi bir boyut

Hepsi, bu dizilerin i-inci satırındaki verilerin m_date[ i ] tarihine karşılık gelmesiyle bağlantılıdır. Tüm bu dizileri tarihe göre sıralamak gerekir.

Bu dizilerdeki satır sayısı (tarih sayısı) m_dim olsun. ArrayResize'ı maliyetli bir işlem olarak kullanmayacağız , örneğimizde sadece m_dim <= 4000.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000 , 2 ];

// Заполняем массив индексов:
for ( int i =  0 ; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort ( m_index, m_dim, 0, MODE_DECEND);

// Все

Şimdi ilk boyuttan tarihi alıyoruz ve ikincisinden - bu tarihe karşılık gelen dizi indeksi

Teşekkür ederim! Kullanacağım.