Если у меня есть два массива, x и y, где y - значение десятков каждого элемента из x. Теперь я хочу сортировать y. Но порядок y будет отличаться от x. Итак, после сортировки, какой элемент в y был связан, например, x [0], я не могу сказать. Я хочу, чтобы "двойная сортировка" могла быть. Ваша помощь бесконечно ценится!
Сортировка массива, связанного с другим массивом
Ответ 1
Array.Sort
имеет перегрузку, которая принимает два массива; один для ключей и один для элементов. Элементы и сортируются в соответствии с массивом keys
:
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
Ответ 2
Если y всегда является десятком значений x, y, вероятно, не должно существовать - вы должны, вероятно, просто вычислить его значение непосредственно из x при необходимости.
В общем случае сортировка параллельных массивов возможна только (без ручного каротажа алгоритма сортировки), когда алгоритм сортировки принимает пользовательскую функцию "своп", которую вы можете реализовать в терминах замены элементов в обоих массивах одновременно. std:: sort в С++ и qsort в C не позволяют этого.
Также в общем случае рассмотрим один массив, в котором элемент представляет собой пару элементов, а не параллельный массив для каждого элемента. Это упрощает использование "стандартных" алгоритмов.