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.

../_images/selectionsortnew.png

Figura 3: Ordenação Por Seleção



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

    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?

  • [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.
Next Section - 5.9. A Ordenação Por Inserção