Настройка
У меня есть список пар целых чисел: ((1,2), (1,3), (2,5), (1,6), (2,8), (9,8), (8,11) и т. Д.).Внутри данной пары числа должны быть разными, но при рассмотрении списка в целом существует много повторов.
Хотя эта информация не имеет прямого отношения к проблеме, каждое число представляет карту из колоды (и составляет от 1 до 52 включительно), а каждая пара представляет одну из возможных карт игрока.
Проблема
Мы хотим отсортировать эти пары чисел таким образом, чтобы на первом месте были пары, содержащие наиболее часто встречающиеся карточки в списке.Затем эти пары упорядочены по 2-му числу в порядке возрастания.Затем мы повторяем процесс, используя оставшиеся пары в списке.Связи разрываются, используя правило, что меньшие числа идут первыми.Давайте сделаем пример, используя список сверху:
Числа 1, 8 и 2 каждый появляются в списке 3 раза, и ни один номер не появляется более 3 раз.Следовательно, есть 3 путевые ничьи и 1 победа.Мы строим первую часть списка следующим образом:
(1,2)
(1,3)
(1,6)
Остальные элементы списка теперь (2,5), (2,8), (9,8),(8,11).8 появляется в 3 раза, больше, чем любое другое число, следовательно, 8 побед.Мы продолжаем наш список следующим образом:
(1,2)
(1,3)
(1,6)
(2,8) <-- Note 2 is the smallest of the "other" numbers amongst the 8 group
(9,8)
(8,11)
(2,5) <-- This gets added in step 3, but since there is only 1 left we add it now
Критерии ответа
Очевидно, я не ожидаю, что кто-нибудь напишет полный алгоритм для меня, но я хотел бы вводао том, как лучше всего разработать его, возможно, с помощью небольших кусочков псевдокода.Моими целями являются эффективность, удобочитаемость и простота в указанном порядке.
В частности:
- Какой объект коллекций следует использовать для представления как пар, так и общего списка?
- Должен ли я получить счетчики для каждого целого числа один раз в начале алгоритма, а затем обновить их, вычитая по мере их использования?Или я должен повторять счет после каждого прохода?Первый кажется более эффективным.
- Как лучше всего выполнить сортировку по «другому» числу в паре?
- Как насчет сортировки, когда возникают связи?
Спасибо за ваш вклад.