优化过程中的单一阵列计算 - 页 8

 
forexman77:

主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的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:

主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的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);

// Все

现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引

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

// Все

现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引

谢谢你!将利用它。