最適化中の単一アレイ計算 - ページ 8

 
forexman77:

ほとんど授業ばかりで、私にとっては暗黒の森のようなものです。しかし、ある思いが湧いてきました。日付と数字を別々に配列にする。ただ、ソート後の日付があるインデックス番号を取得する方法、つまり、2次元にあるiを取得する方法は?

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

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

を行いました。

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:

ほとんど授業ばかりで、私にとっては暗黒の森のようなものです。しかし、ある思いが湧いてきました。日付と数字を別々に配列にする。ただ、ソート後の日付があるインデックス番号を取得する方法、つまり、2次元にあるiを取得する方法はありますか?

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

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

もっと単純な話なんですけどね。例えば、datetime m_date[4000] のような日付配列と、int, string, double ... などの任意の型の、任意の次元の配列があるとします。

これらの配列のi行目のデータが日付m_date[ i ]に対応するように,すべて関連付けられている。これらの配列をすべて日付でソートする必要があります。

これらの配列の行数(日付の数)をm_dimとする。この例では、ArrayResizeを コストのかかる操作として使用 せず、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);

// Все

ここで,1次元目から日付を取り出し,2次元目からその日付に対応する配列のインデックスを 取り出します。

 
Mislaid:

すべてがよりシンプルになりました。例えば,datetime m_date[4000] のような日付の配列と,int, string, double などの任意の型の配列,および任意の次元の配列があるとします.

これらの配列のi行目のデータが日付m_date[ i ]に対応するように,すべて関連付けられている。これらの配列をすべて日付でソートする必要があります。

これらの配列の行数(日付の数)をm_dimとする。この例では、ArrayResizeを コストのかかる操作として使用 せず、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);

// Все

ここで,1次元目から日付を取り出し,2次元目からその日付に対応する配列のインデックスを 取り出します。

ありがとうございました。活用させていただきます。