优化过程中的单一阵列计算 - 页 8 12345678 新评论 forexman77 2016.11.06 13:49 #71 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; } } } Mislaid 2016.11.07 21:52 #72 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);// Все现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引。 Single array calculation during 图形界面 X: 时间控件, 复选框列表控件和表格排序 forexman77 2016.11.07 23:21 #73 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);// Все现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引。 谢谢你!将利用它。 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的i?
double d[215][2];
m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;
做了以下工作。
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;
}
}
}
主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的i?
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);
// Все
现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引。
一切都简单多了。假设我们有一个日期数组,例如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);
// Все
现在,我们从第一个维度中获取日期,从第二个维度中获取与该日期相对应的数组的索引。