Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data structures 限价订单簿:用于维护买卖订单列表的数据结构_Data Structures - Fatal编程技术网

Data structures 限价订单簿:用于维护买卖订单列表的数据结构

Data structures 限价订单簿:用于维护买卖订单列表的数据结构,data-structures,Data Structures,我想建立一个限价订单簿,其中包含买入/卖出订单列表。对于购买订单列表,最高购买价值应位于列表的第一位,而对于销售订单列表,最低销售价值应位于列表的第一位。对于新来的订单,我想在列表中找到正确的位置 目前我正在使用线性搜索来插入,但它需要O(n)时间,这对于数百万订单来说是非常高的 是否有任何数据结构可以在O(logn)或更短时间内将节点插入排序链表? 在O(日志n)或更短的时间内将节点插入已排序的链表 不,那是不可能的 但是,您可以使用二叉搜索树或最小堆(如果您一次只想要最小值或最大值)来存储数

我想建立一个限价订单簿,其中包含买入/卖出订单列表。对于购买订单列表,最高购买价值应位于列表的第一位,而对于销售订单列表,最低销售价值应位于列表的第一位。对于新来的订单,我想在列表中找到正确的位置

目前我正在使用线性搜索来插入,但它需要O(n)时间,这对于数百万订单来说是非常高的

是否有任何数据结构可以在O(logn)或更短时间内将节点插入排序链表?

在O(日志n)或更短的时间内将节点插入已排序的链表

不,那是不可能的


但是,您可以使用二叉搜索树最小堆(如果您一次只想要最小值或最大值)来存储数据。一个平衡的二元搜索树将使您的数据保持排序,并在O(log n)时间内进行插入/删除。

合适的数据结构是A。因为您只关心在顶部维护一个值(最小值或最大值),所以使用最大堆和最小堆。使用堆将增加动态数组的摊余成本。