Einzelne Array-Berechnung während der Optimierung - Seite 8

 
forexman77:

Es geht hauptsächlich um Klassen, die für mich ein dunkler Wald sind. Aber es sind einige Gedanken aufgetaucht. Erstellen Sie ein Array mit getrennten Daten und Zahlen. Nur, wie erhält man die Indexnummer, in der sich die Daten nach der Sortierung befinden, d. h. wie erhält man das i, das sich in der zweiten Dimension befindet?

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

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

Hat das Folgende getan:

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:

Es geht hauptsächlich um Klassen, die für mich ein dunkler Wald sind. Aber einige Gedanken sind aufgetaucht. Erstellen Sie ein Array mit getrennten Daten und Zahlen. Nur, wie erhält man die Indexnummer, in der sich die Daten nach der Sortierung befinden, d. h. wie erhält man das i, das sich in der zweiten Dimension befindet?

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

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

Es ist viel einfacher als das. Angenommen, wir haben ein Datums-Array, zum Beispiel datetime m_date[4000] und eine Menge anderer Arrays beliebigen Typs: int, string, double ... und beliebiger Dimension.

Sie sind alle so miteinander verbunden, dass die Daten in der i-ten Zeile dieser Felder dem Datum m_date[ i ] entsprechen. Sie müssen alle diese Arrays nach Datum sortieren.

m_dim sei die Anzahl der Zeilen in diesen Arrays (Anzahl der Daten). Wir werden ArrayResize nicht als kostspielige Operation verwenden, sondern nur m_dim <= 4000, in unserem Beispiel.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
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);

// Все

Jetzt nehmen wir aus der ersten Dimension das Datum und aus der zweiten Dimension den Index der Arrays, die diesem Datum entsprechen

 
Mislaid:

Es ist viel einfacher als das. Angenommen, wir haben ein Array mit Daten, zum Beispiel datetime m_date[4000] und eine Reihe anderer Arrays beliebigen Typs: int, string, double ... und beliebiger Dimension

Sie sind alle so miteinander verbunden, dass die Daten in der i-ten Zeile dieser Felder dem Datum m_date[ i ] entsprechen. Sie müssen alle diese Arrays nach Datum sortieren.

m_dim sei die Anzahl der Zeilen in diesen Arrays (Anzahl der Daten). Wir werden ArrayResize nicht als kostspielige Operation verwenden, sondern nur m_dim <= 4000, in unserem Beispiel.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
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);

// Все

Jetzt nehmen wir aus der ersten Dimension das Datum und aus der zweiten Dimension den Index der Arrays, die diesem Datum entsprechen

Ich danke Ihnen! Ich werde davon Gebrauch machen.