Executando verificação de segurança...
13

Se o custo de criar o set é O(n), não faz sentido criar um set para fazer uma busca, ainda mais falando sobre uma lista de 10 elementos.

Faz sentido sugerir estudar estrutura de dados, mas é preciso usar exemplos melhores para mostrar a utilidade.

Carregando publicação patrocinada...
3

Era o que ia falar.

Criar o set faz sentido se vc vai fazer muitas buscas e/ou tiver muitos elementos, pois aí o custo de criá-lo se paga.

Mas se é só para uma ou poucas buscas (ou listas com poucos elementos), pode até piorar. Ou no melhor caso, tanto faz porque a diferença será irrisória e imperceptível - afinal, para poucos dados, tudo é rápido.

Dito isso, gosto da mensagem geral, de que conhecer as estruturas de dados é importante. Vejo muito código desnecessariamente complicado ou ineficiente por aí, simplesmente porque a pessoa está usando a estrutura errada.

2

Exatamente! A conversão para set só faz sentido quando há múltiplas buscas ou um grande volume de dados, pois o custo de criação se paga nesses casos. Para listas pequenas ou poucas buscas, a diferença pode ser insignificante ou até piorar a performance. O exemplo poderia ter sido melhor escolhido, mas a ideia principal continua sendo a importância de conhecer estruturas de dados para evitar códigos desnecessariamente complicados ou ineficientes. Muitas vezes, a escolha errada da estrutura pode impactar mais do que parece!

Eu tinha uns 20 exemplos e escolhi o pior, no proximo post eu melhoro, obrigado!

1
0

Ótima observação! De fato, criar um set tem um custo O(n), então para uma única busca em uma lista pequena, a abordagem não traz vantagem. O exemplo poderia ser melhor ajustado para um cenário onde múltiplas buscas são feitas, justificando a conversão para set antes das consultas. O ponto principal do post, no entanto, continua sendo a importância de entender estruturas de dados para tomar decisões informadas e otimizar código quando necessário.

No proximo post eu melhoro o exemplo, obrigado pelo comentario

1

Retornei apenas para dizer que seu post foi útil para mim, pois após ler e não entender o que é O(n) fui estudar e aprendi a notação matemática Big O e as possíveis ordens de crescimento e como isso afeta o desempenho do código. Inclusive fiz um estudo pesado sobre o método sort() do JS, entendendo exatamente o que acontece durante a execução e quantos cálculos ele faz aproximadamente para realizar a ordenação de n elementos, classificado como O(n log n).

Seu exemplo pode não ter sido o melhor, mas a intenção foi boa o suficiente para me levar a aprender algo novo e útil. Agradeço.

1

De qualquer forma eu não entendi nada quando você disse O(n). Então, com licença, vou estudar e volto pra conversar quando estiver mais informado.