Algorithm 开始+;给定的结束-有多少个“;“交易”;同时

Algorithm 开始+;给定的结束-有多少个“;“交易”;同时,algorithm,language-agnostic,Algorithm,Language Agnostic,我有两个数据,其中包括一个事务的开始和一个日期时间格式的结束。我想计算出有多少事务同时运行。有什么算法可以解决我的问题吗?如果您有一个“开始”和“结束”列表,并且您想知道并发打开的连接的最大数量(或者在每个点有多少个连接打开),我将执行以下操作(使用伪代码): 将每个“开始”和“结束”放入一个带有时间戳的数据结构中,另一个字段的值为+1(开始)和-1(结束) 将所有这些元素放入一个数组中,并按时间戳对其排序 创建另一个数组,该数组在每个条目中的总和为前一个数组的+1和-1,直到该索引 该数组的最

我有两个数据,其中包括一个事务的开始和一个日期时间格式的结束。我想计算出有多少事务同时运行。有什么算法可以解决我的问题吗?

如果您有一个“开始”和“结束”列表,并且您想知道并发打开的连接的最大数量(或者在每个点有多少个连接打开),我将执行以下操作(使用伪代码):

  • 将每个“开始”和“结束”放入一个带有时间戳的数据结构中,另一个字段的值为+1(开始)和-1(结束)
  • 将所有这些元素放入一个数组中,并按时间戳对其排序
  • 创建另一个数组,该数组在每个条目中的总和为前一个数组的+1和-1,直到该索引
  • 该数组的最大值就是您的答案
  • 例如:

    Input: 
    
    Connection A opened at 1 closed at 3
    Connection B opened at 2 closed at 6
    Connection C opened at 4 closed at 7
    Connection D opened at 5 closed at 8
    
    Create the following structure:
    
    Timestamp:           1  2  3  4  5  6  7  8
    First array sorted: +1 +1 -1 +1 +1 -1 -1 -1 
    Second array:        1  2  1  2  3  2  1  0
    
    Max open connections = 3
    Number of connections open at timestamp 6 = 2
    
    第二个数组统计每个时间戳中并发打开的连接数,计算如下(伪代码):


    你是否有一个特定的时间,你想知道有多少人在运行,或者你想计算一个平均值,或者高水位线,或者根据时间来绘制一个数字,或者其他一些批量操作?我想用一个表来计算一次运行的频率,例如3个事务-因此必须考虑整个周期。这意味着您只计算打开了多少事务,关闭了多少事务?@guerda:不确定您的意思。。。请你详细说明一下好吗?你忽略了一个事实,那笔交易是在什么时候结束的。您只计算一个交易已关闭。所以你很好地简化了这个问题。
    second_array[i] = sum(first_array[1..i])