Сортировка массива, связанного с другим массивом

Если у меня есть два массива, x и y, где y – значение десятков каждого элемента из x. Теперь я хочу сортировать y. Но порядок y будет отличаться от x. Итак, после сортировки, какой элемент в y был связан, например, x [0], я не могу сказать. Я хочу, чтобы «двойная сортировка» могла быть. Ваша помощь бесконечно ценится!

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 

Если y всегда является десятком значений x, y, вероятно, не должно существовать. Вероятно, вы должны просто вычислить его значение непосредственно из x, когда это необходимо.

В общем случае сортировка параллельных массивов возможна только (без ручного каротажа алгоритма сортировки), когда алгоритм сортировки принимает пользовательскую функцию «своп», которую вы можете реализовать с точки зрения замены элементов в обоих массивах одновременно. std :: sort в C ++ и qsort в C не позволяют этого.

Также в общем случае рассмотрим один массив, в котором элемент представляет собой пару элементов, а не параллельный массив для каждого элемента. Это упрощает использование «стандартных» алгоритмов.

Как насчет?

 var selectedArr = new int[] { 1, 3, 5, 7, 9 }; var unorderArr = new int[] { 9, 7, 5, 3, 1 }; var orderedArr = unorderArr.OrderBy(o => selectedArr.IndexOf(o)); 
  • Преобразование HttpPostedFileBase в байт
  • java: понимание метода Arrays.asList (T ... array) для примитивных типов
  • определить размер массива, если он передан функции
  • Не удается создать массив LinkedLists в Java ...?
  • Преобразовать std :: tuple в std :: array C ++ 11
  • Как скопировать часть массива в другой массив в C #?
  • Новый вызывает конструктор по умолчанию в C ++?
  • Реверсирование массива в Java
  • jQuery .inArray () всегда верно?
  • Обновление вложенных массивов в mongodb
  • Получить определенный элемент из массива mongoDB
  • Давайте будем гением компьютера.