Algorithm 开始+;给定的结束-有多少个“;“交易”;同时
我有两个数据,其中包括一个事务的开始和一个日期时间格式的结束。我想计算出有多少事务同时运行。有什么算法可以解决我的问题吗?如果您有一个“开始”和“结束”列表,并且您想知道并发打开的连接的最大数量(或者在每个点有多少个连接打开),我将执行以下操作(使用伪代码):Algorithm 开始+;给定的结束-有多少个“;“交易”;同时,algorithm,language-agnostic,Algorithm,Language Agnostic,我有两个数据,其中包括一个事务的开始和一个日期时间格式的结束。我想计算出有多少事务同时运行。有什么算法可以解决我的问题吗?如果您有一个“开始”和“结束”列表,并且您想知道并发打开的连接的最大数量(或者在每个点有多少个连接打开),我将执行以下操作(使用伪代码): 将每个“开始”和“结束”放入一个带有时间戳的数据结构中,另一个字段的值为+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])