Todas as complexidades que você forneceu são verdadeiras, porém são fornecidas na notação Big O ; portanto, todos os valores e constantes aditivos são omitidos.
Para responder sua pergunta, precisamos nos concentrar em uma análise detalhada desses dois algoritmos. Essa análise pode ser feita manualmente ou encontrada em muitos livros. Usarei os resultados da Arte da programação de computadores de Knuth .
Número médio de comparações:
- Tipo de bolha : 12(N2−NlnN−(γ+ln2−1)N)+O(N−−√)
- Tipo de inserção : 14(N2−N)+N−HN
- Tipo de seleção : ( N+ 1 ) HN- 2 N
Agora, se você traçar essas funções, obterá algo como isto:
Como você pode ver, a classificação das bolhas é muito pior à medida que o número de elementos aumenta, mesmo que os dois métodos de classificação tenham a mesma complexidade assintótica.
Essa análise é baseada na suposição de que a entrada é aleatória - o que pode não ser verdade o tempo todo. No entanto, antes de começarmos a classificar, podemos permutar aleatoriamente a sequência de entrada (usando qualquer método) para obter o caso médio.
Omiti a análise de complexidade de tempo porque depende da implementação, mas métodos semelhantes podem ser usados.
A função em si, por exemplo, o número de comparações e / ou swaps, pode ser diferente para dois algoritmos com o mesmo custo assintótico, desde que cresçam com a mesma taxa.
Em resumo, o limite assintótico fornece uma boa idéia de como os custos de um algoritmo aumentam com relação ao tamanho da entrada, mas não diz nada sobre o desempenho relativo de algoritmos diferentes no mesmo conjunto.
fonte
A classificação por bolha usa mais tempos de troca, enquanto a classificação por seleção evita isso.
Ao usar a seleção de seleção, alterna os
n
tempos no máximo. mas ao usar o tipo de bolha, ele troca quasen*(n-1)
. E, obviamente, o tempo de leitura é menor que o tempo de gravação, mesmo na memória. O tempo de comparação e outro tempo de execução podem ser ignorados. Portanto, os tempos de troca são o gargalo crítico do problema.fonte