5.8. A Ordenação Por Seleção¶
A ordenação por seleção melhora o bubble sort ao realizar apenas uma troca a cada passagem pela lista. Para conseguir isso, uma ordenação por seleção procura pelo valor mais alto enquanto faz uma passagem e, depois de completá-la, coloca-o na posição correta. Assim como o bubble sort, depois da primeira passagem, o maior item sempre está na posição correta. Depois da segunda passagem, o próximo maior item também vai para a posição adequada. O processo continua dessa forma e demanda \(n-1\) passagens para ordenar n itens, já que o item final deverá estar no lugar certo depois da \((n-1)\)-ésima passagem.
A Figura 3 mostra o processo de ordenação completo. A cada passagem, o maior item remanescente é selecionado e colocado no lugar apropriado. A primeira passagem posiciona o 93, a segunda, o 77, a terceira, o 55, e assim por diante. A função é mostrada no ActiveCode 1.
Você pode ver que a ordenação por seleção faz o mesmo número de comparações que o bubble sort e também é \(O(n^{2})\). Contudo, devido à redução do número de trocas, a ordenação por seleção tipicamente executa mais rápido em análises de desempenho. Na verdade, para a nossa lista, o bubble sort realiza 20 trocas, enquanto a ordenação por seleção faz apenas 8.
Autoavaliação
- [7, 11, 12, 1, 6, 14, 8, 18, 19, 20]
- A ordenação por seleção é semelhante ao bubble sort (aparentemente, o que você fez), mas realiza menos trocas.
- [7, 11, 12, 14, 19, 1, 6, 18, 8, 20]
- Isso parece com a ordenação por inserção.
- [11, 7, 12, 14, 1, 6, 8, 18, 19, 20]
- Parece correto, mas em vez de terem sido feitas trocas, os números foram deslocados para a esquerda para a inclusão dos valores corretos.
- [11, 7, 12, 14, 8, 1, 6, 18, 19, 20]
- A ordenação por seleção melhora o bubble sort ao realizar menos trocas.
Q-2: Suponha que você tenha a seguinte lista de números para ordenar: [11, 7, 12, 14, 19, 1, 6, 18, 8, 20] qual lista representa a lista parcialmente ordenada depois de três passagens completas da ordenação por seleção?