排序网络中的比较器列表

时间:2014-05-22 12:02:26

标签: algorithm list comparator sorting-network

我的作业文件中有一个问题,我很难有时间想象和理解这个问题。问题如下:

  

我们可以用c比较器表示一个n输入比较网络   c对整数的列表,范围从1到n。如果两双   包含一个共同的整数,对应的顺序   网络中的比较器由对中的顺序决定   列表。给定此表示,描述O(n + c)时间   (串行)算法,用于确定比较网络的深度。

在比较网络环境中拥有整数对意味着什么?通常我们使用下面的符号表示比较网络,其中每条水平线代表一个数字。

enter image description here

2 个答案:

答案 0 :(得分:2)

这意味着如果你有一对(1,2),那就是那些垂直线之一,即连接水平线1和2的线。

因此,这张照片的左上角部分将表示为(1,2)(3,4)(1,3)(2,4)。

top left part

该部分的深度为2。

答案 1 :(得分:1)

for i = 1, n 
  depth[i] = 0

total_depth = 0
for j = 1, c
  i1 = comparators[j].entry1
  i2 = comparators[j].entry2
  new_depth = 1 + max(depth[i1], depth[i2])
  depth[i1] = new_depth
  depth[i2] = new_depth
  total_depth = max(total_depth, new_depth)

print(total_depth)