Meu projeto de Sorting List
Olá!
A sorting que estou criando é a Trotsky Sorting, não foi pensada para ser uma sorting tradicional de que "existe um estado inicial e o final, organizaremos sua lista até que chegue ao estado final".
Em cenários reais da computação, a ideia de "ordenação final" perde totalmente o sentido quando estruturas, streams de dados ou sistemas reativos recebem inserções todo momento,** a lista está sempre mudando, o custo de reordenar tudo é, praticamente, inviável.**
Já essa sorting que estamos falando, que, inicialmente, iremos chamar de trotsky sorting, segue o modelo da ordenação contínua, onde a lista nunca é considerada "finalizada", mantida em um processo de ordenação até que entre em um estado de organização aceitável.
Esse é o processo que Trotsky faz:
A lista é submetida a uma divisão de blocos de tamanho fixo, cada bloco sendo uma região independente, onde é possível medir o nível de desordem.
Ao invés de assumir que o bloco precisa ser ordenado, o sistema mede a desordem local, observando quantas inversões existem em elementos adjacentes. Essa medida é avaliada entre 0 e 1, representando o quão instável o trecho está. Somente os blocos com trechos com uma avaliação grande o suficiente para ser considerado "instável" são reordenados.
Além disso, é usado o sistema de passos de estabilização (revolution steps), que corrige apenas partes específicas da lista. Ao longo do tempo, se não houver perturbações na lista, ela tende a convergir a um estado mais ordenado. Caso novos elementos sejam adicionados, o sistema reage localmente, sem reiniciar todo o processo.
!!O nome NÃO foi para apoiar QUAISQUER políticas que sejam, foi apenas uma semelhança com as ideias de Trotsky de revolução permanente e organização social e política da URSS!!