Ja, das ist nicht der Fall. Und wer weiß, was gilt, bitte antworten.
Manchmal verwende ich die Blasensortierung für ein zweidimensionales Array. Sie können die Richtung und Dimension wählen, nach der sortiert werden soll
Artyom Trishkin: Manchmal verwende ich die Blasensortierung für ein zweidimensionales Array. Sie können die Richtung und Dimension wählen, nach der sortiert werden soll
Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen zu, wenn Sie nichts dagegen haben.)
Hinzugefügt: Wie ressourcenintensiv ist es?, könnte auch die Schleife invertieren, was ich nicht tun möchte.
Vitaly Muzichenko: Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen, wenn Sie nichts dagegen haben)
Also, nimm ein Bier mit und komm uns besuchen ;)
Ich erinnere mich nur nicht, welche Dimension des Arrays Sie schrieb - vielleicht brauchen Sie es nicht, und ich werde schieben ...
//+------------------------------------------------------------------+ //| Пузырьковая сортировка двумерного массива | //+------------------------------------------------------------------+ template<typename T> void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) { T t=0; int k=ArrayRange(array,1); // Количество колонок int n=ArrayRange(array,0); // Количество строк
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код }
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код }
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
So steht es in der Hilfe:
Hinweis
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und für statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern bereits zur Kompilierzeit festgelegt ist) gesetzt werden.
Und was hindert Sie daran, sie mit der von mir vorgeschlagenen Funktion zu sortieren?
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern zur Kompilierzeit angegeben wird) gesetzt werden.
Aber was hindert Sie daran, es mit der von mir vorgeschlagenen Funktion zu regeln?
Genau der gleiche Fehler bei der Übergabe an die Funktion
Wie auch immer, ich habe die Schleife erweitert und das Problem ist gelöst. Aber ich würde trotzdem gerne eine normale Lösung in Form einer Standardfunktion sehen
Was passiert, wenn Sie nach der Sortierung die Indizierungsreihenfolge mit ArraySetAsSeries ändern?
ArraySetAsSeries gilt nicht für mehrdimensionale Arrays.
Ja, das ist nicht der Fall. Und wer weiß, was gilt, bitte antworten.
Ja, das ist nicht der Fall. Und wer weiß, was gilt, bitte antworten.
Manchmal verwende ich die Blasensortierung für ein zweidimensionales Array. Sie können die Richtung und Dimension wählen, nach der sortiert werden soll
Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen zu, wenn Sie nichts dagegen haben.)
Hinzugefügt: Wie ressourcenintensiv ist es?, könnte auch die Schleife invertieren, was ich nicht tun möchte.
Ich komme zu Ihnen nach Hause, um den Code zu erfahren, oder ich schicke ihn Ihnen, wenn Sie nichts dagegen haben)
Ich erinnere mich nur nicht, welche Dimension des Arrays Sie schrieb - vielleicht brauchen Sie es nicht, und ich werde schieben ...
//| Пузырьковая сортировка двумерного массива |
//+------------------------------------------------------------------+
template<typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) {
T t=0;
int k=ArrayRange(array,1); // Количество колонок
int n=ArrayRange(array,0); // Количество строк
//---
if(sort_dimension<0) sort_dimension=0;
if(sort_dimension>k) sort_dimension=k;
//---
for(int i=n-1; i>0; i--) {
for(int j=0; j<i; j++) {
//--- по возрастанию
if(sort_direction==0) {
if(array[j][sort_dimension]>array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
//--- по убыванию
else {
if(array[j][sort_dimension]<array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Also, schnapp dir ein Bier und komm vorbei ;)
Ich weiß nur nicht mehr, welche Dimension des Arrays Sie geschrieben haben - vielleicht brauchen Sie es nicht, und ich werde es hier einfügen ...
Es ist Winter, aber die Skier wollen nicht fahren
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
Es ist Winter, aber die Skier wollen nicht fahren
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Fehler: "'m' - Parameterumwandlung nicht erlaubt e.mq5 2076 20"
Hinweis
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und für statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern bereits zur Kompilierzeit festgelegt ist) gesetzt werden.
Und was hindert Sie daran, sie mit der von mir vorgeschlagenen Funktion zu sortieren?
So steht es in der Hilfe:
Hinweis
Das AS_SERIES-Flag kann nicht für mehrdimensionale Arrays und statische Arrays (d.h. Arrays, deren Größe in eckigen Klammern zur Kompilierzeit angegeben wird) gesetzt werden.
Aber was hindert Sie daran, es mit der von mir vorgeschlagenen Funktion zu regeln?
Genau der gleiche Fehler bei der Übergabe an eine Funktion
Welcher ist es?
Zu Ihrem"ArraySortBubbleTwoDims".
Wie auch immer, ich habe die Schleife erweitert und das Problem ist gelöst. Aber ich würde trotzdem gerne eine normale Lösung in Form einer Standardfunktion sehen