我要保持號碼的清單,數高達10萬......對整數的下界和上界查詢的快速數據結構?
如果數據是(例如)
1, 4, 9, 12, 20, 35, 52, 77, 91
,我查詢了一些,說27,我想要剛剛在列表中可用的27之前的數字,那麼將是:20
數據也將經常被修改,就像很多插入和刪除一樣。
目前我使用stl::set
加上
set<int>iterator it = lower_bound(values.begin(), values.end(), n);
所以
*it = 35
與it--
,我得到20 ......但這不是足夠快,以查詢次數是大,高達500,000 ..其中包括改變我的價值或查看價值。
請給我一些指點。
http://xkcd.com/138/ – wilhelmtell 2012-01-31 19:22:33
你想要一個「二叉樹」結構。 – Gabe 2012-01-31 19:26:44
@wilhelmtell是的,在我的路上是帽子裏的男人:) – Pheonix 2012-01-31 19:26:49