Nie zastanawiałem się nad tym, nie wiem jak działa wbudowana metoda usuwania, ale masz rację z pewnością to trochę trwa. Zastąpiłem więc remove() poprzez del, które usuwa po indeksię więc dużo szybciej.
Niestety wstawienie i sortowanie później już jest nie do przejścia…
Czyli cały algorytm jest do niczego? Nieprawdopodobne żę da się coś szybszego wymyślić