Сортировка 2-го массива на основе первого массива - строки, c #.Предложение пожалуйста - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть два массива. Первый массив содержит большое количество слов, у меня второй массив меньше первого массива и содержит несколько слов, встречающихся в первом массиве.Мне нужно отсортировать второй массив по порядку слов в первом массиве.

Пример: -

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 не будет корректно классифицироваться.

Спасибо.

1 Ответ

2 голосов
/ 17 апреля 2011

В каждом случае вам просто нужен собственный способ сравнения любых двух строк. В первом случае, если предположить, что ваш первый массив на самом деле довольно большой, я бы предложил преобразовать массив в Dictionary<string, int>, чтобы вы могли эффективно найти правильный индекс. Затем вы сравнили бы две строки, просто найдя соответствующие значения индекса и сравнив их.

Во втором случае вам нужно разделить значение на две строки, потенциально разобрать оба в целые числа и сравнить эти значения. Вы можете захотеть преобразовать ваш массив строк в коллекцию проанализированных значений, которые легче сравнить, затем отсортировать, а затем преобразовать значения обратно в строки. Это позволит избежать разбора отдельно для каждого сравнения.

Вы можете отсортировать массив, передав пользовательский IComparer<T> или Comparison<T> в Array.Sort.

...