A principal coisa aqui é evitar fazer a mesma comparação mais de uma vez. E há um tipo que realmente atende a esse critério de uma maneira factível para um ser humano classificando sua coleção de filmes.
Com a classificação de mesclagem, você divide de forma recursiva o tamanho do conjunto para 2 (ou 1). E então você classifica cada um desses. Agora, você pega dois conjuntos de 2 (o algoritmo real reduz para conjuntos de 1, mas estamos fazendo isso manualmente e, portanto, podemos evitar esse nível de exatidão) e, em seguida, comparar o primeiro elemento de cada um deles. Se você tiver 3 6 e 2 4 - você já comparou 3 e 6 , você não irá compará-los novamente. O conjunto resultante então se torna 2 3 4 6 e então você continua mesclando com o próximo conjunto de quatro.
Na página da Wikipédia:
Achaveaquiéque,acadacomparação,vocênãoestáreavaliandoascomparaçõesanteriores.Assim,sevocêdecidirquegostamaisdoSubmarinoAmarelodoquedaNoitedosDiasDifíceis,nãovaireavaliarissoeelesnãovãoacabarmuitolongeumdooutronofinal.
Oproblemacommuitosoutrostiposéquevocêestáconstantementeperguntando"eu gosto mais do que Papai Noel Conquista os Marcianos" cada vez com um tipo de seleção / inserção / bolha. E outros tipos tornam-se complicados demais para serem capazes de raciocinar.
Uma maneira de testar isso, o que tornaria algumas postagens interessantes, é implementar você mesmo os diferentes tipos e substituir >
ou compareTo
no idioma escolhido. Nesse método, adicione um pouco de aleatoriedade, digamos, +/- 10% do valor. ou +/- 1% do valor.
Depois, classifique os números 1 .. 100 100x e veja o quão longe cada método de classificação resulta.