基于第一个数组排序第二个数组-字符串,c#.请建议



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

交货:

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

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

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

"0 35:1 44:1 10:1 45:1 46:1 47:118:1 48:1 49:1 50:1 51:1 52:1 53:154:1 55:1 56:1 57:1 58:1 59:1 60:161: 62:1 6:1 63:1 64:1 65:1 66:1 67:119:1 68:1 69:1 70:1 71:1"

在上面的字符串中,我们可以看到10:1出现在44:1之后,等等…我需要看到特征被排序,否则Libsvm将无法正确分类。

谢谢。

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

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

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

最新更新