Löschen eines Arrays mit definierten Element(en) - Seite 17

 
Алексей Тарабанов:

Mach dich nicht über andere lustig

Nicht mal angefangen ;-)

Ich habe nicht einmal die "Prüfsumme" erwähnt, wenn es einen Benchmark gibt.

Man kann sich an die Asymptotik erinnern, mit der die Geschwindigkeit schließlich geschätzt wird.
Und dass dies von der Menge der Eingabedaten, der Anzahl der zu entfernenden Elemente und ihrer Lage/Verteilung (die in Wirklichkeit NIE gleichmäßig ist) abhängt.

und dass Diagramme gezeichnet werden können/sollen.

das Ziel ist sicherlich nicht den Aufwand wert, aber irgendwie sollte die Methodik befolgt werden

Ich könnte noch zwei oder drei Seiten weitermachen :-)

 

Option für Rotation, Pause und Aufwärmen hinzugefügt (der erste Durchgang wird nicht gezählt)

Dateien:
 
Stanislav Dray:

Ich habe eine Variante mit Rotation, Pausen und Aufwärmen hinzugefügt (der erste Durchgang wird nicht berücksichtigt)

Es ist seltsam, dass viele Beispiele nicht richtig mit Strukturen arbeiten können... Vielleicht verstehe ich etwas nicht...

 
Vladimir Pastushak:

Es ist seltsam, dass viele Beispiele nicht richtig mit Strukturen arbeiten können... Vielleicht verstehe ich etwas nicht...

Abschaffung der Strukturen zugunsten von Klassen. Sie sind in MQL leichter zu bearbeiten.

 
Vladimir Pastushak:

Es ist seltsam, dass viele Beispiele nicht richtig mit Strukturen arbeiten können... Vielleicht verstehe ich es nicht...

Wie meinen Sie das? Ich weiß nicht, was Sie meinen. Welche Beispiele funktionieren nicht richtig? Alles funktioniert.

1

 
Vladimir Pastushak:

Es ist seltsam, dass viele Beispiele nicht richtig mit Strukturen arbeiten können... Vielleicht verstehe ich etwas nicht...

Die Funktionen wissen nicht, welches Feld der Struktur verglichen werden soll.

 
Dmitry Fedoseev:

Die Funktion weiß nicht, welches Feld der Struktur verglichen werden soll.

Die Funktion ist feldweise vergleichend. Das Ergebnis ist, dass das letzte Element im Array aus irgendeinem Grund gelöscht wird.

 
Ich habe es herausgefunden, es war das Feld, das sich in der Zeichenkette verschoben hat, nicht die ganze Struktur...
 
Nikolai Semko:

Studieren Sie den Code.

Ich habe Ihren Code überprüft. Sie haben alles richtig gemacht.

Ich verstehe nur nicht, warum diese Zeile den größten Teil meiner Zeit in Anspruch nimmt:

//+------------------------------------------------------------------+
int PeterArray(int &Arr[],const int val) // вариант Peter Konow
  {
   int deleted=0,q=0;
   for(int a1=0; a1<ArraySize(Arr); a1++)
     {
      if(deleted)Arr[q]=Arr[q+deleted];
      if(Arr[q]==val){deleted++; q--;} <-----------Выполнение этих операций занимает кучу времени.
      q++;
     }
   ArrayResize(Arr,q);
   return (q);
  }
//+------------------------------------------------------------------+

Ohne diese Zeile läuft der Code in 2 Mikrosekunden. Aber ohne sie geht es nicht.

Es ist vielleicht nicht die schnellste Lösung, aber eine der prägnantesten.


SZY: Sie haben einen Fehler gemacht, als Sie die Funktion nach meiner Lösung geschrieben haben:

Meine Funktion ist nicht

ArrayResize(Arr,q);

а

ArrayResize(Arr,ArraySize(Arr) - deleted);

Aber trotzdem danke.

 
Vladimir Pastushak:

Die Funktion vergleicht Felder. Das Ergebnis ist, dass aus irgendeinem Grund das letzte Element im Array gelöscht wird.

Bei der Zuweisung eines Elements zu einem anderen, d. h. bei der Verwendung des Zeichens "="?

Ich habe festgestellt, dass es besser ist, selbst zu kopieren. Man kann sich auf nichts verlassen.

Grund der Beschwerde: