Considere dos 2D-Array (la matriz de compra) y (la matriz de venta) donde cada elemento está asociado con una matriz de valores de coma flotante y cada uno de los valores de coma flotante, a su vez, está asociado con una matriz de enteros.
Por ejemplo
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
]
]
y de manera similar para la matriz de venta.
Esto es similar a un sistema de asociación de pedidos de una bolsa de valores
BuyOrderBook = [
CompanyName => [
Price1 => [Qty1, Qty2...],
Price2 => [Qty1, Qty2...]
]
SecondCompany = [...]
]
¿Cuál es la forma más rápida conocida para resolver el siguiente problema:
Entrada: Comprar matriz , Vender matriz Problema: Decidir si hay y con y .
En resumen, ¿cuál es la mejor manera de hacer coincidir las órdenes de un intercambio?
Actualización en respuesta a comentarios
Digamos que MSFT tiene 25 acciones a $ 60 para vender y hay un comprador que está dispuesto a ofrecer $ 61 por 10 acciones de MSFT. Luego, el comprador obtiene 10 acciones a $ 60 y el libro de órdenes de compra se vacía, mientras que el libro de órdenes de venta ahora se actualiza con una nueva cantidad: 15 acciones a $ 60.
Ahora tome el caso inverso, MSFT tiene 25 acciones a $ 60 para comprar y hay un vendedor que está dispuesto a recibir $ 61 por 10 acciones de MSFT. Entonces, el intercambio no se ejecutará porque el vendedor exige un mínimo de $ 61 y el comprador ofrece un máximo de $ 60. Los pedidos ahora se almacenan y esperan hasta que se reciban nuevos pedidos.
(Este es el principio de orden límite , donde el vendedor especifica el precio mínimo al que está dispuesto a vender y el comprador especifica el precio máximo al que está dispuesto a comprar).
Después de la ejecución, el libro de órdenes de venta será (25-10)=15@86.5 mientras que el libro de órdenes de compra estará vacío (10-10) = 0.