Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wenn also ein Auftrag geschlossen wird, muss er aus dem Array "gestrichen" werden. In solchen Fällen habe ich das Array "in sich selbst" kopiert und die Größe um eins verringert.
In einem solchen Fall würde ich ein nicht vorhandenes Ticket in das Array -1 schreiben, warten, bis alle Aufträge abgeschlossen sind, und dann das gesamte Array löschen (die Arraygröße sollte auf 1 gesetzt werden).
Bei diesem Ansatz wird ein Element des Arrays von Tickets (wenn es keine Reihenfolge gibt) mit nur einer Bedingung geprüft: if(ArrayOfTicket[i] > 0) .....
Imho ist es schneller, als das Feld ständig "auszuschütteln".
In diesem Fall würde ich ein nicht vorhandenes Ticket in das Array -1 schreiben, warten, bis alle Bestellungen abgeschlossen sind, und das gesamte Array löschen (Arraygröße = 1).
Bei diesem Ansatz wird ein Element des Arrays von Tickets (wenn es keine Reihenfolge gibt) mit nur einer Bedingung geprüft: if(ArrayOfTicket[i] > 0) .....
Imho ist es schneller, als das Array ständig "auszuschütteln".
Ich versteh das nicht... Was macht es für einen Unterschied, ob man Element für Element löscht oder die Indizes nicht vorhandener Aufträge prüft... das Array wird sowieso geschüttelt...
Wie heute in den Nachrichten gesagt wurde, ist es unmöglich, Geschmack zu patentieren. Floureshers unterscheiden sich nur in der Farbe, schmecken aber alle gleich.
Ich versteh das nicht... Es macht keinen Unterschied, ob Sie Elemente einzeln löschen oder Indizes von nicht vorhandenen Aufträgen überprüfen wollen... Das Array wird sowieso überlaufen...
Wie heute in den Nachrichten gesagt wurde, ist es unmöglich, Geschmack zu patentieren. Floureshers unterscheiden sich nur in der Farbe, schmecken aber alle gleich.
Das Löschen eines Elements impliziert das Kopieren der verbleibenden Elemente des Arrays, ich lösche keine Elemente des Arrays, ich markiere nicht vorhandene Elemente (Tickets) mit dem Wert -1, und ich lösche ein Array von Tickets, wenn es keine Marktaufträge gibt
Was die Flotationsmarker betrifft, so ist es definitiv richtig, dass es je nach Problem im Prinzip 2 Lösungen bei der Optimierung gibt:
- entweder die Komplexität des Algorithmus erhöhen, aber Speicher und Rechenressourcen des PCs sparen
- oder den Algorithmus vereinfachen und Rechenressourcen sparen, aber Speicherplatz verschwenden
Die Prüfsumme ist nicht korrekt, wenn das Array 0 enthält, kann ein Fehler vorliegen
Die Variante von Nikitin funktioniert bei genau diesem Fehler.
Die Prüfsumme ist nicht korrekt, wenn das Array 0 enthält, kann ein Fehler vorliegen
Die Variante von Nikitin funktioniert genau bei einem solchen Fehler.
Ja, Sie haben Recht. Nur Nikitin warf zusätzlich null Elemente aus. Deshalb sah sein Code aus, als ob er fehlerhaft wäre. Eigentlich ging es darum, die Aufgabe zu lösen, die Sie ursprünglich gestellt hatten.
Wenn Sie seine Prüfung auf Nullelemente dokumentieren, ist das Ergebnis das gleiche:
Auch hier berücksichtigt die Prüfsumme jetzt die Reihenfolge der Elemente, was vorher nicht der Fall war.
Ja, Sie haben Recht. Nur Nikitin warf noch weitere Nullelemente in den Raum. Deshalb sah sein Code aus, als ob er falsch wäre. Eigentlich ging es darum, die Aufgabe zu lösen, die Sie ursprünglich gestellt hatten.
Wenn Sie seine Prüfung auf Nullelemente dokumentieren, ist das Ergebnis das gleiche:
Auch hier berücksichtigt die Prüfsumme jetzt die Reihenfolge der Elemente, was vorher nicht der Fall war.
Übrigens, wenn die Reihenfolge sehr wichtig ist, können Sie ArraySort am Ende meiner Variante hinzufügen und sehen, wie effektiv ArraySort überhaupt ist.
Mich interessiert nun eine andere Frage, auf die ich keine Antwort finde.
Vielleicht kann jemand erklären, warum diese Variante von Kuznetsovs Code:
funktioniert mehr als doppelt so schnell wie diese, die genau das Gleiche tut:
Was sind die Wunder des Compilers?
Ist es möglich, dass für ein solches Design:
while(arr[i]!=x && i<j) i++;
Findet der Compiler einen speziellen Assembler-Lookup-Befehl für den Prozessor?
Kennt sich jemand mit modernen Prozessorbefehlen aus?
Übrigens, wenn die Reihenfolge sehr wichtig ist, kann ich ArraySort am Ende meiner Version hinzufügen, zur gleichen Zeit sehen wir, wie effektiv ArraySort überhaupt ist.
Ich habe es ausprobiert. Das ist eine ziemlich kostspielige Funktion. Es ist allerdings einfacher, sie anschließend wegzuwerfen. Alle notwendigen müssen in einer Reihe stehen.
Ja, Sie haben Recht. Nur Nikitin warf zusätzlich Nullnummern. Deshalb sah sein Code falsch aus. Eigentlich war es die Aufgabe, die Sie ganz am Anfang definiert hatten.
Wenn Sie seine Prüfung auf Nullelemente dokumentieren, ist das Ergebnis das gleiche:
:
arbeitet mehr als doppelt so schnell wie eine, die genau dasselbe tut:
der Optimierer ist irrelevant - die Vergleiche sind weniger als die Hälfte...