如何有效地比较多维数组的两行?
例如,如果我有以下多维数组:
<?xml version="1.0" encoding="utf-8"?>
我希望将每一行相互比较,最终得到所有唯一的行
答案 0 :(得分:1)
在您的示例中,效率最高的可能是强力或硬编码逻辑。
对于较大的数组,您可以选择为每行中的第一个字符创建一个单独的指针数组,然后与qsort
一起运行memcmp
。
对指针进行排序后,您可以遍历该排序数组并再次使用memcmp
来比较一行与之前的行。您可以同时从列表中删除重复项。 e.g。
int i, uniq = 0;
for( i = 1; i < NUM_ROWS; i++ )
{
if( 0 != memcmp( sorted[uniq], sorted[i], ROW_SIZE ) )
sorted[++uniq] = sorted[i];
}
++uniq;
如果你的行很小,你可以选择完全跳过指针数组并就地修改数组(如果你想做的话)。