0

首先,我不知道标题是否适合我想做的事情。也许它有另一个名字。

因此,假设我有一个按如下顺序排列的列表:

dog1
dog2
dog3
cat1
cat2
cat3
hen1
hen2
hen3

我想要的是

dog1
cat1
hen1
dog2
cat2
hen2
dog3
cat3
hen3

是否有一个标准的算法,或者是用户的选择?我在想的是先给它们编号,然后把索引放在前面。

11dog1
22dog2
33dog3
14cat1
25cat2
36cat3
17hen1
28hen2
39hen3

从那里我会对它们进行排序,然后删除索引。有没有更优雅的方式?

4

2 回答 2

0

一种方法可能是重载您的“<”运算符,例如: dog1 < dog2 , dog1 < cat1 ...

含义 AB < CD = 仅当 (B < D) 或 (B==D 且 A < C) 时为真

其中 A 是字符部分,B 是 AB 的数字部分

于 2012-11-22T21:47:39.163 回答
0

我的想法是你将每一行分隔在单独的数组中。

array1 -> dog1, dog2, dog3
array2 -> hen1, hen2, hen3
array3 -> cat1, cat2, cat3

然后创建另一个数组来存储结果并执行以下操作:

string result[array1.length + array2.length + array3.length];
int counter = 0;
for(int i = 0; i < array1.length; i++) {
    result[counter] = array1[i];
    result[counter + 1] = array2[i];
    result[counter + 2] = array3[i];

    counter += 3;
}
于 2012-11-22T19:15:25.483 回答