输入
我有一个MAC地址列表(AA:AA:AA:AA:AA:AA)
。
目标
对列表进行排序,并对它们进行bucketize,以便共享前8个半字节的mac地址落在一个存储桶中。
示例输入
AA:AA:AA:AA:11:11
AA:AA:AA:BB:15:BA
AA:AA:AA:AA:22:22
AA:12:12:12:AA:15
AA:AA:AA:BB:11:11
AA:AA:AA:AA:12:12
示例输出
AA:12:12:12:
AA:15
AA:AA:AA:AA:
11:11
12:12
22:22
AA:AA:AA:BB:
11:11
15:BA
我的方法
Container - std::map<std::string, std::vector<std::string> > bucket
The map has a custom comparator function which compares 8 nibbles
Insert 8 nibbles as key:
If not already present in map, add entry
If already present add, balance 4 nibbles into the value vector
答案 0 :(得分:1)
您可以使用radix sort对列表进行排序。我建议你考虑每对十六进制数字作为排序的单个数字。
答案 1 :(得分:0)
你可以制作一个n(16)-ary树,(你也可以看作一个范围树)。