Executando verificação de segurança...
0
tarfao
1 min de leitura ·

Quando usar quicksort, mergesort, heapsort...?

Durante o período da faculdade, estudamos alguns algoritmos de ordenação como o quicksort, mergesort, heapsort e outros... são algoritmos bem interessantes, porém quando entramos no mercado de trabalho, acabamos por nos deparar com outra realidade.
Usamos ordenação direto no banco de dados. Muitas vezes quando precisamos ordernar um array de objetos, acabamos utilizando o método .sort de forma bem simples (pelo menos no JS), veja um exemplo:

numbers.sort(function (a, b) { return a - b; });

Então a minha dúvida é: É comúm não utilizarmos esses algoritmos de ordenação no nosso código, seja em javascript ou qualquer outra linguagem?

Parece que desenvolver esses algoritmos para ordernar uma pequena porção de dados, não vai valer apena.

Carregando publicação patrocinada...
3

Na maioria das situações profissionais, é extremamente raro precisar implementar algoritmos de ordenação. As linguagens funções de ordenação oferecidas pela plataforma já são muito bem otimizadas e completamente testadas. A implementação personalizada de um algoritmo de ordenação só se justifica em cenários muito específicos, como quando há requisitos de desempenho extremamente particulares ou ao se trabalhar com tipos de dados 'bizarros'. Mesmo nessas situações, é essencial realizar um profiling do software para verificar se a ordenação realmente é um gargalo e se os métodos padrão não são adequados.

Por outro lado, o ensino de algoritmos de ordenação em cursos de ciência da computação e engenharia de software tem um valor inestimável. Estes algoritmos são fundamentais para o entendimento de conceitos como complexidade de tempo e espaço, recursão e estruturas de dados como árvores e heaps. Aprender esses algoritmos melhora a habilidade de resolver problemas e pensar de forma algorítmica (criar seus próprios algoritmos), como também prepara os desenvolvedores para situações que exigem um entendimento profundo dos processos de ordernação e seja necessário alguma intervenção pontual, mesmo que muitas vezes seja apenas algo pontual.

2

Você aprende isso na faculdade principalmente para que você entenda esses conceitos, e não porquê você vai de fato implementar uma ordenação na mão.

99% das linguagens vão te entregar isso pronto de forma otimizada.

A menos que esteja trabalhando com uma quantidade gigante de dados, não se preocupe com isso.