Considérons deux tableaux 2D (le tableau d'achat) et (le tableau de vente) où chaque L'élément est associé à un tableau de valeurs à virgule flottante et chacune des valeurs à virgule flottante, à son tour, est associée à un tableau d'entiers.
Par exemple
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
]
]
et de même pour le tableau de vente.
Cela s'apparente à un système d'association d'ordres d'une bourse de valeurs / matières premières
BuyOrderBook = [
CompanyName => [
Price1 => [Qty1, Qty2...],
Price2 => [Qty1, Qty2...]
]
SecondCompany = [...]
]
Quel est le moyen le plus rapide connu pour résoudre le problème suivant:
Entrée: acheter un tableau, Vendre un tableau
Problème: décidez s'il y a et avec et .
En bref, quelle est la meilleure façon de faire correspondre les commandes d'un échange?
Mise à jour en réponse aux commentaires
Disons que MSFT a 25 actions @ 60 $ à vendre et qu'il y a un acheteur qui est disposé à offrir 61 $ pour 10 actions de MSFT. Ensuite, l'acheteur obtient 10 actions @ 60 $ et le carnet d'ordre d'achat devient vide tandis que le carnet d'ordre de vente est maintenant mis à jour avec une nouvelle quantité - 15 actions @ 60 $ .
Prenons maintenant le cas inverse, MSFT a 25 actions @ 60 $ à acheter et il y a un vendeur qui est disposé à recevoir 61 $ pour 10 actions de MSFT. Ensuite, la transaction ne sera pas exécutée car le vendeur exige un minimum de 61 $ et l'acheteur offre un maximum de 60 $ . Les commandes sont désormais stockées et attendent jusqu'à ce que de nouvelles commandes soient reçues.
(Il s'agit du principe de la commande à cours limité , où le vendeur spécifie le prix minimum auquel il est disposé à vendre et l'acheteur spécifie le prix maximum auquel il est disposé à acheter).
Après exécution, le carnet d'ordre de vente sera (25-10)=15@86.5 tandis que le carnet d'ordre d'achat sera vide (10-10) = 0.