gpt4 book ai didi

delphi - 头寸滚动历史的数据结构

转载 作者:行者123 更新时间:2023-12-03 18:24:51 24 4
gpt4 key购买 nike

我有一个应用程序从外部数据源读取偏移值。这些偏移距中心点 (nom =0) 为 +-。

我想保存这些偏移的最后一分钟并将它们显示在滚动图上。该图表需要根据最后一分钟的数据自动调整其最小值/最大值。

所以我可以看到这是指向 FIFO 队列。

我使用的是 Delphi 7,但是当尝试使用 TQueue 类时,我看不到使用 Peek() 访问队列中值的任何方式(而只是队列的顶部)。

我的问题有更好的数据结构吗?

我需要存储 60 个浮点数,访问所有浮点数以显示在图表上,并确定队列中任意时间点的最大值。

最佳答案

警告:我不知道德尔福。但是在语言不可知论的术语中,您可以只维护某种具有适当大小的循环缓冲区。用一个数组支持它,并让你的写指针在数组索引中循环。如果缓冲区已满,则读取从写入指针开始,否则为 0。

为了找到最小值/最大值,您可以做几件事:

  • 天真的方法:每次都重新计算最小值和最大值。在)。 (对于 n=60 来说还不错。)
  • 稍微好一点:只有在弹出最小值或最大值时才重新计算最小值和最大值。 (当然你也需要为每次推送更新它。) O(n)。
  • 渐近良好:将您的值保存在自平衡二叉搜索树中。当你插入循环缓冲区时插入树中,当你从缓冲区中弹出时从树中删除。 O(log n)。
  • 关于delphi - 头寸滚动历史的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201352/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com