Как сортировать массив ключей на основе значений, хранящихся в отдельном массиве в C#Как отсортировать массив ключей на основе значений, хранящихся в отдельном массиве
Пример
int[] keys = new int[] {1, 2, 3, 4, 7};
double[] vals = new double[] {0.5, 0.2, 0.3, 0.1, 0.4};
Я хотел бы сортировать массив ключей на основе значений в массиве vals, т.е. получить следующий порядок ключей массива:
4, 2, 3, 7, 1
Я пытался сделать следующее
Array.Sort(keys, (a, b) => vals[a].CompareTo(vals[b]));
Но я получаю следующее сообщение об ошибке:
Additional information: Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: 'System.Array+FunctorComparer`1[System.Int32]'.
Я предполагаю, что а и Ь параметры см к ключевым значениям, а не к ключевым индексам в массиве ключей.
Спасибо за ответ, но это не совсем то, что я хотел достичь. Я обновил свой вопрос. Это не просто индексация, начиная с 1. Это скорее следует понимать как ключи. Извините за это недоразумение и, пожалуйста, посмотрите мой обновленный пример. –
@SebastianWidz - Мой первый ответ отлично работает с клавишами. – Enigmativity