C比较多维数组中的两个char数组

时间:2016-04-05 06:33:12

标签: c arrays multidimensional-array

如何有效地比较多维数组的两行?

例如,如果我有以下多维数组:

<?xml version="1.0" encoding="utf-8"?>

我希望将每一行相互比较,最终得到所有唯一的行

1 个答案:

答案 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;

如果你的行很小,你可以选择完全跳过指针数组并就地修改数组(如果你想做的话)。