数组计算交集比字典快 这个代码看不懂请解析
Sub 请解析这个代码()
An = [a65536].End(3).Row
Bn = [h65536].End(3).Row
a = Range("a11:g" & An)
b = Range("h11:n" & Bn)
ReDim ar(1 To UBound(a), 1 To 6)
Dim c(1 To 15, 1 To 15, 1 To 15, 1 To 15, 1 To 15, 1 To 15)
For i = 1 To UBound(a)
c(a(i, 1), a(i, 2), a(i, 3), a(i, 4), a(i, 5), a(i, 6)) = 1
'这一句c(a(i, 1), a(i, 2), a(i, 3), a(i, 4), a(i, 5), a(i, 6)) = 1 究竟什么意思,有什么用
Next
For i = 1 To UBound(b)
If c(b(i, 1), b(i, 2), b(i, 3), b(i, 4), b(i, 5), b(i, 6)) = 1 Then
N = N + 1
For j = 1 To 6
ar(N, j) = b(i, j)
Next
End If
Next
[u11].Resize(N, 6) = ar
End Sub
c是一个六维数组,可以理解为宇宙中有六个星球,飞船分别距离星球最大距离为15个单位,最小为1个单位。六个数据可以定位飞船的唯一位置,姑且编号为1(当然也可以为任何数),假定一切静止。数万年过去,发现1号飞船,则测得六个数据和原来必然一致(交集)
|