我有一个包含大量字符串元素的结构成员。我想要的是迭代结构的整个成员并仅计算不同的元素(不同的姓氏)。
struct log {
char *last;
};
...
struct log *l
l->last = last_name; // loading *last member with data coming from last_name var
...
比较和计算当前 *last 上的唯一元素的好方法是什么?
任何帮助将不胜感激。
最佳答案
根据 last_name
键对数组进行排序。重复项将彼此相邻。
对数组进行线性扫描,检查当前项之后有多少条目具有相同的姓氏。对于所有这些重复项,将计数器增加一次。将您的阅读头增加到第一个不同的条目。
对于大小为 n
的数组:O(n lg n) + O(n) = O(n lg n)
次操作,假设 O (n lg n)
排序例程。
关于c - C 中的 strcmp 结构 - 不同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780350/