0

我有两个数组第一个数组有大量单词,我有第二个数组小于第一个数组,并且有一些单词出现在第一个数组中。我需要根据第一个数组中单词的顺序对第二个数组进行排序。

前任:-

firstarray = ["a","c","b"...];
2ndarray = ["b","c"...];

2ndarrayaftersort = ["c","b"];

第一个数组是特征向量,第二个数组是 SVM 分类中的权重向量。

或者我需要对一串字符进行排序......比如

"0 35:1 44:1 10:1 45:1 46:1 4:1 47:1 18:1 48:1 49:1 50:1 51:1 52:1 53:1 54:1 55:1 56:1 57:1 58:1 59:1 60:1 61:1 62:1 6:1 63:1 64:1 65:1 66:1 67:1 19:1 68:1 69:1 70: 1 71:1"

在上面的字符串中,我们可以看到 10:1 在 44:1 之后发生,依此类推...我需要查看特征是否已排序,否则 Libsvm 将无法正确分类。

谢谢。

4

1 回答 1

2

在每种情况下,您只需要一种自定义方法来比较任意两个字符串。在第一种情况下,假设您的第一个数组实际上非常大,我建议将数组转换为 aDictionary<string, int>以便您可以有效地找到正确的索引。然后,您只需找到相应的索引值并比较它们即可比较两个字符串。

在第二种情况下,您需要将值拆分为两个字符串,可能将两者解析为整数,然后比较这些值。您可能希望将字符串数组转换为更易于比较的解析值集合,然后排序,然后将值转换回字符串。这将避免为每个比较单独解析。

IComparer<T>您可以通过将自定义或Comparison<T>传入来对数组进行排序Array.Sort

于 2011-04-17T06:40:42.707 回答