2011-04-17 24 views
0

我有两个数组第一个数组有大量的单词,我有第二个数组较小的第一个数组,并有一些单词发生在第一个数组中。我需要根据第一个数组中的单词顺序对第二个数组进行排序。基于第一个数组排序第二个数组 - 字符串,c#。建议请

例如: -

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将无法正确分类。

谢谢。

+0

我们在谈论https://secure.wikimedia.org/wikipedia/en/wiki/Support_vector_machine吗? – GregC 2011-04-17 06:41:56

+0

是的。支持向量机。 – 2011-04-17 06:44:29

回答

2

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

在第二种情况下,您需要将值分成两个字符串,可能会将这两个字符串解析为整数,然后比较这些值。你可能想要将你的字符串数组转换成一个更易于比较的解析值的集合,然后进行排序,然后再将值转换回字符串。这将避免分别为每个比较进行解析。

您可以通过将自定义IComparer<T>Comparison<T>传递到Array.Sort来排序数组。

相关问题