二级排序脚本算法

时间:2012-11-22 19:05:32

标签: sorting

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

所以,假设我的订单如下:

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

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

一种方法可能是重载你的“&lt;”运营商这样: dog1&lt; dog2,dog1&lt; cat1 ...

含义AB&lt;仅当(B 时,CD =真

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

的数字部分