Betrachten Sie zwei 2D-Arrays (das Kaufarray) und (das Verkaufsarray), wobei jedes -Element einem Array von Gleitkommawerten und jedem der Gleitkommawerte zugeordnet ist. ist wiederum einem Array von ganzen Zahlen zugeordnet.
Zum Beispiel
B = [
0001 => [ 32.5 => {10, 15, 20},
45.2 => {48, 16, 19},
...,
k1
],
0002 => [ 35.6 => {17, 35, 89},
68.7 => {18, 43, 74},
...,
k2
]
]
und ähnlich für das Verkaufsarray.
Dies ähnelt einem Auftragsassoziationssystem einer Börse
BuyOrderBook = [
CompanyName => [
Price1 => [Qty1, Qty2...],
Price2 => [Qty1, Qty2...]
]
SecondCompany = [...]
]
Was ist der schnellste bekannte Weg, um das folgende Problem zu lösen:
Eingabe: Array kaufen , Array verkaufen Problem: Entscheide, ob es und mit und .
Kurz gesagt, was ist der fetteste Weg, um Bestellungen für einen Umtausch abzugleichen?
Update als Antwort auf Kommentare
Nehmen wir an, MSFT hat 25 Aktien zu einem Preis von 60 USD zu verkaufen, und es gibt einen Käufer, der bereit ist, 61 USD für 10 Aktien von MSFT anzubieten. Dann erhält der Käufer 10 Aktien zu 60 USD und das Kaufauftragsbuch wird leer, während das Verkaufsauftragsbuch jetzt mit einer neuen Menge aktualisiert wird - 15 Aktien zu 60 USD .
Nehmen wir nun den umgekehrten Fall: MSFT hat 25 Aktien zu einem Preis von 60 USD zu kaufen, und es gibt einen Verkäufer, der bereit ist, 61 USD für 10 Aktien von MSFT zu erhalten. Dann wird der Handel nicht ausgeführt, da der Verkäufer ein Minimum von 61 USD verlangt und der Käufer ein Maximum von 60 USD anbietet . Die Bestellungen werden nun gespeichert und warten, bis neue Bestellungen eingehen.
(Dies ist das Limit-Order-Prinzip , bei dem der Verkäufer den Mindestpreis angibt, zu dem er zu verkaufen bereit ist, und der Käufer den Höchstpreis angibt, zu dem er zu kaufen bereit ist.)
Nach der Ausführung ist das Verkaufsauftragsbuch (25-10)=15@86.5, während das Kaufauftragsbuch leer ist (10-10) = 0.