Если у меня есть два массива, X и Y, где y является значением десятков каждого элемента в x. Теперь, я хочу отсортировать y. Но, порядок y будет отличаться из x's. Так, я не могу сказать после сортировки, какой элемент в y был связан с, например, x [0]. Я хочу "двойную сортировку", может быть. Ваша справка бесконечно ценится!
Array.Sort
имеет перегрузку , которая принимает два массива; один для ключей, и один для элементов. Элементы оба отсортированы в соответствии с массивом ключей
:
int[] keys = { 1, 4, 3, 2, 5 };
string[] items = { "abc", "def", "ghi", "jkl", "mno" };
Array.Sort(keys, items);
foreach (int key in keys) {
Console.WriteLine(key); // 1, 2, 3, 4, 5
}
foreach (string item in items) {
Console.WriteLine(item); // abc, jkl, ghi, def, mno
}
Так что в вашем случае это звучит так, как будто вы хотите:
Array.Sort(y,x); // or Sort(x,y); - it isn't 100% clear
Если y - это всегда десятки значений x, то, наверное, y не должно существовать - наверное, нужно просто вычислять это значение прямо из x, когда это необходимо.
В общем, сортировка параллельных массивов возможна только (без ручной прокатки алгоритма сортировки), когда алгоритм сортировки берет пользовательскую функцию "своп", которую можно реализовать с точки зрения подмены элементов в обоих массивах одновременно. std::sort в Си++ и qsort в Си этого не допускают.
Также в общем случае рассмотрим один массив, в котором элемент является парой элементов, а не параллельным массивом для каждого элемента. Это облегчает использование "стандартных" алгоритмов
.