我遇到了以下问题:
给定 2 个包含 N 个数字的文件,例如
file1.dat: 1,2,3,4,5,6,7,8,9,0
file2.dat: 2,5,4,7,6,9,8,1,0,3
file2.dat 实际上只是第一个的改组版本。我想知道第一个文件中两个连续数字的顺序在第二个文件中改变了多少次(包含相同的数字)。例如,在文件一中我们开始寻找1和2,在第二个文件中,2在1之前,所以顺序发生了变化;在第一个文件中有 9,然后是 0,在第二个文件中,这个顺序保持不变,因为 9 在 0 之前。
我使用的实际数据大致由 26000 个数字组成,它们都是不同的。
我想到了类似的东西:
for(i=0; i<N-1; i++)
for(j=0; j<N; j++)
for(k=0 ; k<N; k++)
if(B[j]==A[i] && B[k]==A[i+1] && k < j )
count++
print("The number of inversion is: %d\n",count)
但我不知道如何在 awk 中编写它(我写了一个小 C 程序,但给我答案需要 5 个多小时)而且我不知道类似的东西是否可以在合理的时间内给我一个结果.