Сортировка совпадающих массивов в Java - PullRequest
24 голосов
/ 22 сентября 2008

Допустим, у меня есть два массива (на Java),

int [] числа; и int [] colors;

Каждый i-й элемент чисел соответствует его i-му элементу в цветах. Ex, числа = {4,2,1} цвета = {0x11, 0x24, 0x01}; Означает, что число 4 - цвет 0x11, число 2 - 0x24 и т. Д.

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

Ex. числа = {1,2,4}; цвета = {0x01,0x24,0x11};

Какой самый чистый и простой способ сделать это? В массивах есть несколько тысяч элементов, поэтому лучше было бы быть на месте, но не обязательно. Имеет ли смысл использовать Arrays.sort () и пользовательский компаратор? Использование библиотечных функций в максимально возможной степени предпочтительнее.

Примечание. Я знаю, что «лучшее» решение - создать класс для двух элементов и использовать собственный компаратор. Этот вопрос предназначен для того, чтобы задать людям самый быстрый способ кодирования этого. Представьте себе, что вы участвуете в соревновании по программированию, вам не хотелось бы создавать все эти дополнительные классы, анонимные классы для компаратора и т. Д. Еще лучше, забудьте о Java; как бы вы написали это в C?

Ответы [ 13 ]

0 голосов
/ 13 сентября 2010

Использовать TreeMap

0 голосов
/ 22 сентября 2008

Самый простой способ сделать это в C, это пузырьковая сортировка + двойные указатели. Конечно, самым быстрым будет быстрая сортировка + два указателя. Конечно, второй указатель поддерживает корреляцию между двумя массивами.

Я бы лучше определил значения, которые хранятся в двух массивах, как структуру, и использовал бы структуру в одном массиве. Тогда используйте быструю сортировку на этом. вы можете написать общую версию sort, вызвав функцию сравнения, которую затем можно написать для каждой структуры, но тогда вы уже знаете, что:)

0 голосов
/ 22 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...