Pertimbangkan dua 2D-Array (array beli) dan (array jual) di mana masing-masing elemen dikaitkan dengan array nilai floating-point dan masing-masing nilai floating point, pada gilirannya, dikaitkan dengan array bilangan bulat.
Sebagai contoh
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
]
]
dan serupa untuk larik jual.
Ini mirip dengan sistem asosiasi pesanan dari pertukaran saham / komoditas
BuyOrderBook = [
CompanyName => [
Price1 => [Qty1, Qty2...],
Price2 => [Qty1, Qty2...]
]
SecondCompany = [...]
]
Apa cara tercepat yang diketahui untuk memecahkan masalah berikut:
Input: Beli larik, Jual array
Masalah: Putuskan apakah ada dan dengan dan .
Singkatnya, apa cara paling gemuk untuk mencocokkan pesanan untuk pertukaran?
Perbarui dalam menanggapi komentar
Katakanlah, MSFT memiliki 25 saham @ $ 60 untuk dijual dan ada pembeli yang bersedia menawarkan $ 61 untuk 10 saham MSFT. Kemudian pembeli mendapat 10 saham @ $ 60 dan buku pesanan pembelian menjadi kosong sementara buku pesanan jual sekarang diperbarui dengan jumlah baru - 15 saham @ $ 60.
Sekarang ambil kasus sebaliknya, MSFT memiliki 25 saham @ $ 60 untuk dibeli dan ada penjual yang bersedia menerima $ 61 untuk 10 saham MSFT. Maka perdagangan tidak akan dieksekusi karena penjual menuntut minimal $ 61 dan pembeli menawarkan maksimum $ 60. Pesanan sekarang disimpan dan menunggu hingga pesanan baru diterima.
(Ini adalah prinsip limit order , di mana penjual menentukan harga minimum di mana dia bersedia untuk menjual dan pembeli menentukan harga maksimum di mana dia bersedia untuk membeli).
Pasca eksekusi, buku pesanan jual akan (25-10 )=15@86.5 sementara buku pesanan beli akan kosong (10-10) = 0.