Мне часто приходится сортировать колоды карт. Это "коллекционные" карты, пронумерованные от 1 до 216, и есть удвоения и недостающие номера.
Я ищу алгоритмы сортировки, которые хорошо работают с физическими картами. Сортировка вставки кажется прекрасной, поскольку вставка карты не требует сдвига последующих карт, например, в памяти компьютера. Однако сканирование через большую колоду занимает много времени. С большой колодой есть даже шансы, что вы можете сбросить колоду и перезапустить сортировку.
Я мог бы нарисовать карты на большом столе и сразу поместить каждую карту в нужное место, но это занимает довольно много места и не очень удобно.
Мой обычный подход - сделать первое сканирование через колоду и поместить их в стеки 1-49, 50-99, 100-149, 150-199, 200+. Затем я просматриваю каждую колоду и кладу ее в стопки 0, 1, 2, 3, 4. И, наконец, я применяю сортировку вставки для каждого 10-пакета. Однако это остается утомительным процессом.
Другая идея - взять 50 стеков и отсортировать их примерно. 25 будет идти по середине, 40 где-то ближе к концу стека и так далее. Это быстро приносит грубо отсортированную 50-колоду, и я могу легко ее просканировать и исправить сортировку.
Мне было интересно, можно ли удобно применять более сложный алгоритм для физической колоды. Я не вижу, как мы можем применять быстрый вид, а вещь типа кучи должна знать индекс карты внутри колоды.