🚨 Importante: Sobre a Matriz Se a matriz for uma matriz quadrada (NxN) então a complexidade seria O(N^2) e não O(N*M) ou pra simplificar no video falei O(LINHA*COLUNA). Se o tamanho da matriz quadrada aumentar (ou seja, N aumenta), o tempo de execução crescerá quadráticamente com N. Como falei, é importante comunicar na entrevista se estão falando da quantidade de células ou das dimensões assim como saber se a matriz é quadrada ou não. Sobre a Árvore Binária Como falei se a árvore estiver ordenada (balanceada) vamos ter um O(log(n)) mas se ela não estiver ordenada teremos O(n) ou O(h) onde o h é a altura da árvore. O site para ver todas notações que comentei no video: bigocheatsheet.com
É um bom meio pra levar seu conhecimento em algoritmo para outro nível, porém é apenas uma estatística matemática muito mais comum em meio acadêmico. Em projetos reais é beeem raro ver ela sendo aplicada, e ela tem sido discutida no meio como uma métrica realmente relevante, visto que na pratica os resultados são outros (pesquise por "Big O notation: why it matters, and why it doesn’t"). Então aprenda, vai ser bom para fins de aprendizado e entrevistas, mas n surta com isso.
Sou professor e já dei a disciplina de estrutura de dados e eu sempre bato na tecla que o Big O é o conteúdo mais importante, pois o aluno no mínimo tem que saber os impactos e o comportamento do código que ele está desenvolvendo. Para compreender isso eu faço desafios com dados de alta escala e volume, o aluno é obrigado utilizar as estruturas de dados para conseguir poder resolver o problema de forma rápida.
eu achei bem estranho a materia, fizemos codigos em sala de aula, mas não consigo entender como funciona na prática, pra concluir na prática precisamos entregar um programa testado com 4 formas de fazer, vamos ver oq acontece!
Lembrando para não ficarem somente na notação O, as notações Theta e Ômega são bastantes importantes também, ou seja em análise de limites assintoticos não analisamos somente até o pior caso, que nesse seria o contexto da notação O().
Todos esses conceitos estão descritos no livro Grokking Algorithms (capa com uns ratinhos). Recomendo demais para os iniciantes, uma vez que é um livro super didático e contém até umas ilustrações pra ajudar no entendimento.
Caraca, explica bem pra caramba, fui ver pela aula da estácio, já estava endoidando, explicou de forma simples e bem explicado de uma forma que um leigo como eu conseguiu entender a teoria e a pratica, obrigado +1 inscrito
Lucas entrou na minha mente agora. Eu tava exatamente estudando sobre complexidade de código, e me chega o Lucas, com um vídeo enviado há 5 mins sobre Big O Notation. O mais brabo apenas
Incrível, esse assunto esta caindo neste período da minha faculdade, eu estava muito confuso e explicou muito bem. Deixou minha mente bem mais clara. Inclusive por conta da faculdade achei que nem era um assunto tão serio, mas agora vou me esforça a buscar mais conhecimento nesse assunto.
Vídeo mais do que necessário. Tem muita gente que se diz Dev Sênior que fica no Twitter dizendo que faculdade é inútil mas não sabe o que é uma simples notação big(o), não sabe como fazer a analise de complexidade de um código, conteúdo básico de segundo período em uma das disciplinas mais importantes do curso de Ciência da Computação. É como meu professor sempre diz: "Tudo na computação muda com o tempo, linguagens deixam de existir, tecnologias morrem, até mesmo a programação estruturada, que foi super consolidada até a década de 90 foi perdendo seu espaço com a chegada da programação orientadas a objetos causando grandes mudanças e fazendo com que os programadores precisassem se atualizar. A única coisa que nunca muda é a base matemática da computação e seus fundamentos, quem não tem isso sempre fica pra trás quando grandes mudanças acontecem. " As IAs representam uma futura mudança, eu tomaria cuidado. Quem possui o real conhecimento por tras da computação, sua base matemática e seus fundamentos consegue com mais facilidade se adaptar quando surgem novas tecnologias como muita gente fez muita gente antes do grande boom do Machine Learning. Demorou anos pra que disponibilizassem bibliotecas que permitissem que outros devs "criem" modelos e facilmente treinem com seus dados, mas a área de estudos de machine learning se iniciou em 1950 e já em 1970 surgiu o perceptron, um modelo de rede neural simples que pode ser usado pra aprender a classificar padrões lineares. Quem teve sua base bem fundada conseguiu aprender antes mesmo do grande boom mas somente hoje a grande massa está tendo acesso. Quem tem as bases bem fundadas e entende bem o inglês consegue pegar os diversos conteúdos que existem pra estudar e caso seja necessário migrar de área consegue se adaptar pois já está meio caminho andado, mas quem não tem, vai precisar ficar esperando seu youtuber favorito fazer vídeo.
Tô lendo nesse momento o livro: Entendendo Algoritmos - Um guia ilustrado para programadores e outros curiosos e esse vídeo veio bem a calhar junto com a leitura, gratidão 🙏
dependendo da formação, possivelmente existem muitos devs no mercado que não conhecem essa notação( eu mesmo não conhecia) até ser surprendido em um processo de seleção. Mas nunca é tarde para aprender, Lucas mandou muito bem na apresentação e recomendo tbm a galera estudar mais sobre grafos junto com esses conceitos de complexidade.
Mano nunca ouvi falar em BIG O e minha cabeça bugou um pouco e quando perguntou sobre arvore binaria? Fiquei 🥲 F. Ainda bem que comentou oq era. Lucas seus conteúdos são wonderful. Sempre assisto os videos apesar de não entender alguns kkk Abraços.
Um detalhe importante sobre a busca binária é que apesar da busca ser muito rápida ela requer que seus dados estejam ordenados o que faz com que o custo de inserção de novos elementos seja maior que em cenários em que tu não precisa manter a estrutura ordenada. No fim cada caso tem que ser analisado individualmente. Baita vídeo!
Рік тому
Sou mais do que iniciante, ainda estou começando a aprender programação, gosto do teu canal.
que video bom, desmistificou o bicho de sete cabeças que eu criei na minha mente sobre esse tema, deu até mais vontade de estudar... mandou muito na explicação!
Eu vendo aqui dps de estudar e testar alguns algoritmos de busca linear e busca binaria.. lendo o livro e aplicando nas linhuagens que estudo(java e js) e feliz da vida pq to aprendendo. Vou ta pronto quando a vaga chegar
Lucas seu vídeo caiu como uma luva... Estou estudando nesse exato momento na faculdade estrutura de dado e estou vendo Big O e árvore binária. Deu pra perceber enquanto assistia o vídeo que estou entendo do assunto. Valeu e quero mais!
Esse vídeo me fez lembrar uma matéria na faculdade chamada complexidade de algoritmo. Nela analisávamos se um trecho do código tinha desempenho bom ou não através da formula matemática. fiz essa matéria em 2010 e até hoje faz todo o sentido rsrs
Ficou bacana sim Lucas! Entendi mais um pouco sobre o Big O Notation. No dia a dia a gente acaba não pensando em termos e especificações técnicas, só quer que o código seja o mais performático possível e fácil de entender. O que me quebra são essas coisas mais técnicas que não penso enquanto trabalho desenvolvendo meus sistemas, quando preciso passar por elas em matérias da faculdade, por exemplo. Valeu!
Lucas te confesso que nunca tinha ouvido falar sobre o tema, mas não é novidade pelo meu nível iniciante no mundo dev, mas curto d+ a sua didática e a maneira com que vc conduz os temas aqui no seu canal... assisto a todos os vídeos, ainda que eu não conheça do assunto, assim forço o meu cérebro a se acostumar com as informações!!! muito obrigado...
Muito bom o vídeo Lucas, continue trazendo conteúdos como este! A maioria dos devs só estão interessados em ferramentas, coisas que mudam constantemente e são efêmeras (lógico que possuem sua importância). Mas esquecem a importância da Ciência da Computação. Aquilo que é imutável, os conceitos base, e o que realmente importa para se ser um programador com mais qualidade.
Explicação foda, me jogaram isso no primeiro semestre da faculdade quase sem explicação kkkk, abriu bastante minha mente esse vídeo. Obrigado Lucas Montano do canal Lucas Montano.
Belo trabalho Lucas, gosto bastante do tema, séria ansioso para ver mais assuntos como este aqui. Tentando acrescentar um pouquinho ao vídeo para quem possa ler, o Big O descreve o limite superior do algoritmo, são palavras difíceis mas quer dizer que o Big O não é tão exato, por exemplo se tu tem um algoritmo linear e digo que o o Big O é O(n^2) não esta errado, pois o O(n^2) é um limite superior a 0(n). Para quem tem interesse, pode-se pesquisar por Big O, que ira encontrar outras anotações como Omega e Theta, que assim como o Big O descrevem o comportamento assintótico do algoritmo porém de formas diferentes, O Omega vai ser o limite inferior e o Theta é limite exato que mostrar o comportamento do algoritmo com inputs maiores. Além disso tem mais um tópico importante que não é tão usado, porém Big O é usado para ter uma ideia do uso de recursos de acordo com que o input da tua aplicação cresce, normalmente consideramos recursos sendo somente CPU ou Clocks pois essa dinâmica muda um pouco em multithread, porém o Big também pode ser usado para calcular o uso de memória (RAM) . Enfim, espero não ter cagado a explicação do Lucas e deixado as coisas mais confusas na cabeça de ninguém, e talvez ter sido útil para alguma alma perdida aqui nos comentários.
Vim pra tentar entender BigO e saí com a cabeça explodindo de tanta informação, HAHAHAH Valeu Montano por sempre explicar tudo nos mííííííínimos detalhes, heheheh. Abraço de Porto Alegre-RS. Obs.: estou lendo o livro "Entendendo Algoritmos - Aditya Y. Bhargava", vi o tema e fui procurar por fora.
Conteúdo excelente meu mano. Se destacando demais dos outros conteúdos que temos na bolha. Fez muito bem em não falar desse assunto da semana no twitter!!
Lucas, eu estava fazendo uma liçao do CS50 justamente sobre isso hj e nao estava entendendo mto bem! Agora sei Tudo! Vlw! By the way 7:02 é "contiver". Eu percebi q vc hesitou ao dizer.
Você só vai entender isso de fato (DE VERDADE MESMO) quando já tiver estudado calculo 1, estrutura de dados e quando já compreender filas e listas do SO.
Importante falar o motivo do qual se descarta as complexidades menores do mam algoritmo, eh importante isso pq quando tu joga n ao infinito o o(1) fica bem descartavel, ou entao o(n) o(n^2) quando tu observa o grafico dessa funcao para o limit de n para o infinito, tu percebe que o n é ínfimo comparado ao n2
Ontem chegou aqui o livro Entendo Algoritmos E aparece o video do lucas sobre bigO Achei que so as bigtechs me espionavam Agora sei que sao as bigT e o Lucas Montano
Então resumidamente Big O Notation nada mais é que um conjunto estatísco que visa ilustrar o desempenho da estrutura de dados que a pessoa está desenvolvendo. Obrigado pelas dicas.
Boa! Quando paguei Estrutura de dados na faculdade eu vi isso dai, mas muita coisa eu fui me esquecendo, implementei pouquissimas vezes uma árvore e tal
Bicho, ainda bem que eu conheci "programação" por meio da matemática/ciencia da computação. Lembro que a primeira coisa que meu mestre me ensinou foi sobre Análise e complexidade algoritmos.
4:36, eu falei que era o for, pq o for seria o que mais iria demorar pra ser resolvido, pq como ele aumenta de forma exponencial, ele é o mais pesado dependendo do tamanho do array. O que entendi até então é que: O big o notation serve para identificar as partes mais demoradas ou que vão custar mais (de desempenho eu acho) no sistema. Não sei se está certo, no final do vídeo eu volto e comento oq estou entendendo e oq acho que é o big o notation!
6:16, OK é O de ENE, pq ele pega o que for maior dentro da função e encapsula toda a função nessa notação, me surgiram duas dúvidas: 1: Quando eu crio uma função inteira O(1) e apenas um trecho dela é O(n), mesmo assim ela vai ser considerada O(n)? r: Pelo que entendi até então sim! (Eu mesmo estou respondendo, mas fiquem a vontade pra responder tbm!) 2: Caso eu tenha um função O(n) aninhada em outra função O(n), eu tenho uma função 2*O(n)? r: Não, o resultado seria O(n^2), pois estaríamos multiplicando O(n) X O(n). (GPT ajuda muito pra aprender haha)
Terminei o vídeo, o que entendi é que Big O Notation serve para nos dizer qual a parte mais pesada do nosso código (seja por tempo ou processamento), os tipos de notações variam desde muito bom até meu Deus do céu me ajuda, agora vou começar a tentar identificar o Big O nos meus futuros códigos e tentar chegar sempre no O(1), ou O(log n) e caso seja muito difícil melhorar, deixar até um O(n) mesmo haha! Obrigado por mais um vídeo incrível senhor Lucas Montano do canal Lucas Montano!
eu simplesmente trabalhava como programador fazia cerca de 1ano e 6 meses quando resolvi me aprofundar nessas questões não faço idéia como que eu progredi tanto até hoje mal mal entendendo big O notation
Meu amigo, eu to iniciando agora na programação e não entendi nada KSKSKKSKSKKSKKS, daqui uns 3 meses eu volto aqui e assisto novamente e tento SKKSKSKKKSKKSKSKKSKSKS
A árvore binária é uma estrutura de dados onde cada nó pode ter 0, 1 ou 2 filhos, e esta quantidade de filhos equivale ao grau deste nó desta árvore. E cada filho de um nó de uma árvore binária pode ser considerado também como sendo uma árvore binária, de modo propositadamente recursivo! ;)
Quando tu falou das formas de crescimento, na hora me veio a mente as gravuras dos graficos e curvas kkkkkkkkk e olha que sinceramente eu nao me lembro de cabeca as notacoes em relacao aos algoritmos (pq eu nao to aplicando para cenarios que precisa e enfim) ah as b-treeeeees....
A minha pergunta não tem nada haver com o vídeo. Então Lucas, me diz oq você realmente pensa sobre o mercado atual. Ainda tem espaço pra estudantes? É possível entrar como júnior ainda? Principalmente home office, pra quem mora em cidades que não tem vagas pra desenvolvimento? Qual você acha que é a maior dificuldade pra quem está começando na área agora e qual é o melhor maneira de se aprender sobre o mercado e oq está em alta? São várias coisas mas eu agradeceria muito uma resposta sua
Não sou o Lucas mano, mas tem sim vagas para junior (não é como se a profissão fosse acabar), a maioria das vagas são remotas, e para ver o que está em alta no mercado procure pelas vagas e o que elas estão exigindo.
@@marcosalves9853 obrigado pela resposta, eu tenho essa dúvida pois tenho visto muita gente reclamar que aplica pra mais de 100 vagas e não consegue de jeito nenhum entrar no mercado de trabalho. Isso me faz questionar um pouco se ainda vale a pena investir anos na área
Assiste o video do Fabio Akita "a bolha de startups estourou ?" Entao aproveita, na verdade a melhor hora pra estudar é agora daqui alguns anos quando o mercado voltar a subir você já estará pronto para o mercado
Livro da faculdade: Assim, A(n) = p1xC1 + p2xC2 + ... + pn + 1xCn+1, logo obviamente pode se concluir que A(n) = O( log n) Eu: sim, é claro, é óbvio, entendi tudo 😐
Essa coisa de "depende do teu hardware" envolve justamente o propósito de notações de complexidade: avaliar o desempenho do algoritmo em si, sem levar em consideração fatores específicos de onde vai ser rodado e tal E pra comparar desempenhos, acho que nem precisava falar de árvores binárias diretamente, só assumir que o array sendo percorrido pra busca está com os elementos ordenados :D Até porque talvez tu esteja querendo falar de árvores binárias de pesquisa, que é um assunto mais específico fldskjf btw acho que a implementação de `std::map` no gcc em C++ usa red-black trees, que é um tipo de árvore binária de busca com balanceamento que se estuda em cadeiras de estruturas de dados na faculdade dlskfj
Ba Lucas, tu podia fazer um vídeo sobre a frase "Não é como se tu fosse, sei lá, um programador e precisasse saber disso"... quais são os dissos além desse disso? hahahah
Se eu não estiver enganado. Uma arvore binária é básicamente uma arvore de listas ligadas, onde cada nodo contem alem do dado associado ao nodo, ponteiros para os próximos nodos na arvore, fazendo assim, uma estrutura parecida com uma... arvore, tipo o nodo principal, ou original é como se fosse a raiz, e os outros nodos são galhos, a raiz tem ponteiros para galhos, que por sua vez tem ponteiros para outros galhos, até chegar no final da arvore binária. Eu acho que é isso... assumindo q eu não esteja confundindo com outra estrutura...
Ter ponteiros ou listas ligadas entra muito em detalhe de implementação e não conceitual Acho que dá pra definir recursivamente assim: Uma árvore binária é ou: - vazio (e.g. um ponteiro nulo); - ou um nodo contendo um valor de algum tipo, e duas árvores binárias
@@arsnakehert Tbm, mas é pq eu tô pegando da memória da minha aula de algoritimos q eu tive, a gente tava usando a linguagem C. Por isso que tava incluindo conceitos como ponteiros e listas ligadas.
Lucas, tava meio bêbado ontem e deixei um comentário que lendo hj ficou rude. A dica e valida, eu tenho esse microfone tbm e ele captura o som muito bem a distância. E quando você agarra ele e fala direto nele o som da minha tv vai lá pra cima. Mas espero que você perdoe o tom do meu comentário de ontem. Curto seus vídeos e torço pelo seu sucesso.
Resumindo, com notação O você consegue ver se o seu algoritmo é bom ou uma bela 💩!! Recomendo o Livro Algoritmos do Cormen da capa vermelha (mas em INGLÊS), há diversos erros na versão em português. Muito bem observado Lucas, hoje faltam programadores que tenham noção disso.
Lucas Montano Lucas ... A 5ª série que habita em mim, saúda a 5ª que habita em você Muito bom esses vídeo falando sobre algoritmos, já pensou em fazer uma série de vídeo fazendo exemplos de algoritmos e mostrando complexidade de espaço e tempo? Acredito que a maioria dos vídeo que tem isso é uma visão muito voltada para faculdade e muitas vezes só tem pseudo código
Mano, isso nunca fica pronto não??? Sempre que entro aqui nesse canal e olha que eu entro sempre, tu sempre tá montano. Para de fazer corpo mole e termina isso logo. Valeu pelo vídeo!
nada melhor que comer lucas montano enquanto assisto almoçando
Tu tá comendo Lucas montano???? Lá ele 😮
@@Diegoreecoba lá ele nada. quem não?
🤔
@@Diegoreecoba 😂😂😂😂😂😂😂😂
@@hideki0000 😮 eu gostuuuuummm
Queremos mais vídeos sobre algoritmos!
Real!
Up!
Up
🚨 Importante:
Sobre a Matriz
Se a matriz for uma matriz quadrada (NxN) então a complexidade seria O(N^2) e não O(N*M) ou pra simplificar no video falei O(LINHA*COLUNA).
Se o tamanho da matriz quadrada aumentar (ou seja, N aumenta), o tempo de execução crescerá quadráticamente com N. Como falei, é importante comunicar na entrevista se estão falando da quantidade de células ou das dimensões assim como saber se a matriz é quadrada ou não.
Sobre a Árvore Binária
Como falei se a árvore estiver ordenada (balanceada) vamos ter um O(log(n)) mas se ela não estiver ordenada teremos O(n) ou O(h) onde o h é a altura da árvore.
O site para ver todas notações que comentei no video: bigocheatsheet.com
É um bom meio pra levar seu conhecimento em algoritmo para outro nível, porém é apenas uma estatística matemática muito mais comum em meio acadêmico.
Em projetos reais é beeem raro ver ela sendo aplicada, e ela tem sido discutida no meio como uma métrica realmente relevante, visto que na pratica os resultados são outros (pesquise por "Big O notation: why it matters, and why it doesn’t").
Então aprenda, vai ser bom para fins de aprendizado e entrevistas, mas n surta com isso.
Sou professor e já dei a disciplina de estrutura de dados e eu sempre bato na tecla que o Big O é o conteúdo mais importante, pois o aluno no mínimo tem que saber os impactos e o comportamento do código que ele está desenvolvendo. Para compreender isso eu faço desafios com dados de alta escala e volume, o aluno é obrigado utilizar as estruturas de dados para conseguir poder resolver o problema de forma rápida.
eu achei bem estranho a materia, fizemos codigos em sala de aula, mas não consigo entender como funciona na prática, pra concluir na prática precisamos entregar um programa testado com 4 formas de fazer, vamos ver oq acontece!
senhor lucas, tu ensina muito bem, sério, parabéns!
valeuuu!
Lembrando para não ficarem somente na notação O, as notações Theta e Ômega são bastantes importantes também, ou seja em análise de limites assintoticos não analisamos somente até o pior caso, que nesse seria o contexto da notação O().
Cara, FINALMENTE um vídeo que me fez entender isso de verdade. Thanks!
Todos esses conceitos estão descritos no livro Grokking Algorithms (capa com uns ratinhos). Recomendo demais para os iniciantes, uma vez que é um livro super didático e contém até umas ilustrações pra ajudar no entendimento.
Caraca, explica bem pra caramba, fui ver pela aula da estácio, já estava endoidando, explicou de forma simples e bem explicado de uma forma que um leigo como eu conseguiu entender a teoria e a pratica, obrigado +1 inscrito
Vim fazer uma revisão rápida para prova e acabou ganhando uma seguidora! Você é muito didático parabéns.
Lucas entrou na minha mente agora. Eu tava exatamente estudando sobre complexidade de código, e me chega o Lucas, com um vídeo enviado há 5 mins sobre Big O Notation. O mais brabo apenas
Incrível, esse assunto esta caindo neste período da minha faculdade, eu estava muito confuso e explicou muito bem. Deixou minha mente bem mais clara. Inclusive por conta da faculdade achei que nem era um assunto tão serio, mas agora vou me esforça a buscar mais conhecimento nesse assunto.
Vídeo mais do que necessário. Tem muita gente que se diz Dev Sênior que fica no Twitter dizendo que faculdade é inútil mas não sabe o que é uma simples notação big(o), não sabe como fazer a analise de complexidade de um código, conteúdo básico de segundo período em uma das disciplinas mais importantes do curso de Ciência da Computação.
É como meu professor sempre diz:
"Tudo na computação muda com o tempo, linguagens deixam de existir, tecnologias morrem, até mesmo a programação estruturada, que foi super consolidada até a década de 90 foi perdendo seu espaço com a chegada da programação orientadas a objetos causando grandes mudanças e fazendo com que os programadores precisassem se atualizar. A única coisa que nunca muda é a base matemática da computação e seus fundamentos, quem não tem isso sempre fica pra trás quando grandes mudanças acontecem. "
As IAs representam uma futura mudança, eu tomaria cuidado. Quem possui o real conhecimento por tras da computação, sua base matemática e seus fundamentos consegue com mais facilidade se adaptar quando surgem novas tecnologias como muita gente fez muita gente antes do grande boom do Machine Learning. Demorou anos pra que disponibilizassem bibliotecas que permitissem que outros devs "criem" modelos e facilmente treinem com seus dados, mas a área de estudos de machine learning se iniciou em 1950 e já em 1970 surgiu o perceptron, um modelo de rede neural simples que pode ser usado pra aprender a classificar padrões lineares. Quem teve sua base bem fundada conseguiu aprender antes mesmo do grande boom mas somente hoje a grande massa está tendo acesso. Quem tem as bases bem fundadas e entende bem o inglês consegue pegar os diversos conteúdos que existem pra estudar e caso seja necessário migrar de área consegue se adaptar pois já está meio caminho andado, mas quem não tem, vai precisar ficar esperando seu youtuber favorito fazer vídeo.
O Brasil é uma grande árvore binária.
Big O é o pesadelo de quem não quer estudar o que trás o pão pra mesa. Compilou? Rodou? Ta baum
Tô lendo nesse momento o livro: Entendendo Algoritmos - Um guia ilustrado para programadores e outros curiosos e esse vídeo veio bem a calhar junto com a leitura, gratidão 🙏
Muito bom esse livro !!
Livro com uma linguagem muito bacana mesmo! Foi minha primeira leitura desse ano! Linka muito com o vídeo e recomendo demais também!
Exatamente, eu estava lendo também e vi que o Lucas Montana postou esse vídeo e ajudou mais ainda a compreensão.
dependendo da formação, possivelmente existem muitos devs no mercado que não conhecem essa notação( eu mesmo não conhecia) até ser surprendido em um processo de seleção. Mas nunca é tarde para aprender, Lucas mandou muito bem na apresentação e recomendo tbm a galera estudar mais sobre grafos junto com esses conceitos de complexidade.
Grafos é MUITO importante.
Mano nunca ouvi falar em BIG O e minha cabeça bugou um pouco e quando perguntou sobre arvore binaria? Fiquei 🥲 F. Ainda bem que comentou oq era.
Lucas seus conteúdos são wonderful. Sempre assisto os videos apesar de não entender alguns kkk Abraços.
Um detalhe importante sobre a busca binária é que apesar da busca ser muito rápida ela requer que seus dados estejam ordenados o que faz com que o custo de inserção de novos elementos seja maior que em cenários em que tu não precisa manter a estrutura ordenada. No fim cada caso tem que ser analisado individualmente.
Baita vídeo!
Sou mais do que iniciante, ainda estou começando a aprender programação, gosto do teu canal.
que video bom, desmistificou o bicho de sete cabeças que eu criei na minha mente sobre esse tema, deu até mais vontade de estudar... mandou muito na explicação!
Lucas explicou melhor que o meu professor da minha faculdade ks
98% dos assuntos da faculdade encontramos professores melhores no youtube kkk
Uma das Matérias que mais amo da Computação.
Eu vendo aqui dps de estudar e testar alguns algoritmos de busca linear e busca binaria.. lendo o livro e aplicando nas linhuagens que estudo(java e js) e feliz da vida pq to aprendendo. Vou ta pronto quando a vaga chegar
Lucas seu vídeo caiu como uma luva... Estou estudando nesse exato momento na faculdade estrutura de dado e estou vendo Big O e árvore binária. Deu pra perceber enquanto assistia o vídeo que estou entendo do assunto. Valeu e quero mais!
Esse vídeo me fez lembrar uma matéria na faculdade chamada complexidade de algoritmo. Nela analisávamos se um trecho do código tinha desempenho bom ou não através da formula matemática.
fiz essa matéria em 2010 e até hoje faz todo o sentido rsrs
Obrigado pelos seus conhecimentos compartilhados Big Montan0
Ficou bacana sim Lucas!
Entendi mais um pouco sobre o Big O Notation.
No dia a dia a gente acaba não pensando em termos e especificações técnicas, só quer que o código seja o mais performático possível e fácil de entender. O que me quebra são essas coisas mais técnicas que não penso enquanto trabalho desenvolvendo meus sistemas, quando preciso passar por elas em matérias da faculdade, por exemplo.
Valeu!
Eu estudei isso a mil anos na faculdade, surpreendentemente ainda me lembro de boa parte
Lucas te confesso que nunca tinha ouvido falar sobre o tema, mas não é novidade pelo meu nível iniciante no mundo dev, mas curto d+ a sua didática e a maneira com que vc conduz os temas aqui no seu canal... assisto a todos os vídeos, ainda que eu não conheça do assunto, assim forço o meu cérebro a se acostumar com as informações!!! muito obrigado...
Muito bom o vídeo Lucas, continue trazendo conteúdos como este!
A maioria dos devs só estão interessados em ferramentas, coisas que mudam constantemente e são efêmeras (lógico que possuem sua importância).
Mas esquecem a importância da Ciência da Computação. Aquilo que é imutável, os conceitos base, e o que realmente importa para se ser um programador com mais qualidade.
Mais vídeos sobre conteúdo tech de verdade! Parabéns pelo conteúdo!
Explicação foda, me jogaram isso no primeiro semestre da faculdade quase sem explicação kkkk, abriu bastante minha mente esse vídeo. Obrigado Lucas Montano do canal Lucas Montano.
6:16 mereceu pkrl o like nessa
Belo trabalho Lucas, gosto bastante do tema, séria ansioso para ver mais assuntos como este aqui. Tentando acrescentar um pouquinho ao vídeo para quem possa ler, o Big O descreve o limite superior do algoritmo, são palavras difíceis mas quer dizer que o Big O não é tão exato, por exemplo se tu tem um algoritmo linear e digo que o o Big O é O(n^2) não esta errado, pois o O(n^2) é um limite superior a 0(n). Para quem tem interesse, pode-se pesquisar por Big O, que ira encontrar outras anotações como Omega e Theta, que assim como o Big O descrevem o comportamento assintótico do algoritmo porém de formas diferentes, O Omega vai ser o limite inferior e o Theta é limite exato que mostrar o comportamento do algoritmo com inputs maiores. Além disso tem mais um tópico importante que não é tão usado, porém Big O é usado para ter uma ideia do uso de recursos de acordo com que o input da tua aplicação cresce, normalmente consideramos recursos sendo somente CPU ou Clocks pois essa dinâmica muda um pouco em multithread, porém o Big também pode ser usado para calcular o uso de memória (RAM) . Enfim, espero não ter cagado a explicação do Lucas e deixado as coisas mais confusas na cabeça de ninguém, e talvez ter sido útil para alguma alma perdida aqui nos comentários.
Vim pra tentar entender BigO e saí com a cabeça explodindo de tanta informação, HAHAHAH
Valeu Montano por sempre explicar tudo nos mííííííínimos detalhes, heheheh.
Abraço de Porto Alegre-RS.
Obs.: estou lendo o livro "Entendendo Algoritmos - Aditya Y. Bhargava", vi o tema e fui procurar por fora.
eu vi bastante sobre na faculdade de ads, mas essa maneira que tu resumiu me fez entender mto mais do que a cadeira inteira HUAHUAHUSH
Cara muito obrigado pelo video, estou estudando sobre estrutura de dados e esclareceu muito sobre o Big O Notation.
Conteúdo excelente meu mano. Se destacando demais dos outros conteúdos que temos na bolha. Fez muito bem em não falar desse assunto da semana no twitter!!
Vídeo que todo universitário deveria assistir pra se preparar para o mundo!
Lucas, eu estava fazendo uma liçao do CS50 justamente sobre isso hj e nao estava entendendo mto bem! Agora sei Tudo! Vlw! By the way 7:02 é "contiver". Eu percebi q vc hesitou ao dizer.
Você só vai entender isso de fato (DE VERDADE MESMO) quando já tiver estudado calculo 1, estrutura de dados e quando já compreender filas e listas do SO.
Lucas, obrigado por explicar o tema, se possivel outros temas para melhorar a base, grato.
Perfeito Lucas obrigado pela explicação, com certeza um dos melhores videos sobre o assunto em pt-BR.
Lucas faz uma playlist sobre algoritmos
A tarde toda quebrando a minha cabeça
Muito bom parabéns, gostei muito do conteúdo achei muito didático
eu jurava que for de for era o^2 e não o2, mas faz bastante sentido considerando que vai desconsiderar as constantes
Valeu pelo trabalho Lucas, muito bom cara.. comecei a reforçar as bases acerca de algoritmos e estrutura de dados após seus vídeos, tamo junto!!
Importante falar o motivo do qual se descarta as complexidades menores do mam algoritmo, eh importante isso pq quando tu joga n ao infinito o o(1) fica bem descartavel, ou entao o(n) o(n^2) quando tu observa o grafico dessa funcao para o limit de n para o infinito, tu percebe que o n é ínfimo comparado ao n2
unica vez na vida q precisei usar log. Gosto de usar o big para numero de iteracoes, tempo de execução é relativo a vaaaaarios fatores
Muito bom. Parabéns pelo conteúdo !!
Ontem chegou aqui o livro Entendo Algoritmos
E aparece o video do lucas sobre bigO
Achei que so as bigtechs me espionavam
Agora sei que sao as bigT e o Lucas Montano
Que video incrível, tua didática é sensacional, parabéns! Traz mais conteúdo assim
AMEI O VIDEO, MAIS NESSE ESTILO POR FAVOR. MUITO TOOOP E DIFERENCIAL!
Então resumidamente Big O Notation nada mais é que um conjunto estatísco que visa ilustrar o desempenho da estrutura de dados que a pessoa está desenvolvendo. Obrigado pelas dicas.
Boa! Quando paguei Estrutura de dados na faculdade eu vi isso dai, mas muita coisa eu fui me esquecendo, implementei pouquissimas vezes uma árvore e tal
uso arvore binaria para extrair attributes dos xml e values para transformar em json.
Obrigado pelo conteúdo !
Traga mais desse tipo de conteudo! Muito bom
Aguardo ansiosamente o Lucas Desmontano.
Bicho, ainda bem que eu conheci "programação" por meio da matemática/ciencia da computação.
Lembro que a primeira coisa que meu mestre me ensinou foi sobre Análise e complexidade algoritmos.
Claro, foi uma abordagem mais "historico-contextual" e BEEEEM introdutória, mas com certeza foi um divisor de águas.
4:36, eu falei que era o for, pq o for seria o que mais iria demorar pra ser resolvido, pq como ele aumenta de forma exponencial, ele é o mais pesado dependendo do tamanho do array.
O que entendi até então é que: O big o notation serve para identificar as partes mais demoradas ou que vão custar mais (de desempenho eu acho) no sistema.
Não sei se está certo, no final do vídeo eu volto e comento oq estou entendendo e oq acho que é o big o notation!
6:16, OK é O de ENE, pq ele pega o que for maior dentro da função e encapsula toda a função nessa notação, me surgiram duas dúvidas:
1: Quando eu crio uma função inteira O(1) e apenas um trecho dela é O(n), mesmo assim ela vai ser considerada O(n)?
r: Pelo que entendi até então sim! (Eu mesmo estou respondendo, mas fiquem a vontade pra responder tbm!)
2: Caso eu tenha um função O(n) aninhada em outra função O(n), eu tenho uma função 2*O(n)?
r: Não, o resultado seria O(n^2), pois estaríamos multiplicando O(n) X O(n). (GPT ajuda muito pra aprender haha)
Terminei o vídeo, o que entendi é que Big O Notation serve para nos dizer qual a parte mais pesada do nosso código (seja por tempo ou processamento), os tipos de notações variam desde muito bom até meu Deus do céu me ajuda, agora vou começar a tentar identificar o Big O nos meus futuros códigos e tentar chegar sempre no O(1), ou O(log n) e caso seja muito difícil melhorar, deixar até um O(n) mesmo haha!
Obrigado por mais um vídeo incrível senhor Lucas Montano do canal Lucas Montano!
Acabei de ver que têm um limite dentro de cada estrutura de dados*
eu simplesmente trabalhava como programador fazia cerca de 1ano e 6 meses quando resolvi me aprofundar nessas questões
não faço idéia como que eu progredi tanto até hoje mal mal entendendo big O notation
Impressionante no começo eu não tava entendendo nada no final eu tava igual ao começo 😢
Vídeo sensacional
Meu amigo, eu to iniciando agora na programação e não entendi nada KSKSKKSKSKKSKKS, daqui uns 3 meses eu volto aqui e assisto novamente e tento SKKSKSKKKSKKSKSKKSKSKS
O conceito caiu como uma luva o entendimento, agora é só decorar e treinar
Vídeo absurdo... bem demais
A árvore binária é uma estrutura de dados onde cada nó pode ter 0, 1 ou 2 filhos, e esta quantidade de filhos equivale ao grau deste nó desta árvore.
E cada filho de um nó de uma árvore binária pode ser considerado também como sendo uma árvore binária, de modo propositadamente recursivo! ;)
MT bom , vou assistir umas 20x kkkk estudei nesse semestre
Temas assim é interessante.
Quando tu falou das formas de crescimento, na hora me veio a mente as gravuras dos graficos e curvas kkkkkkkkk
e olha que sinceramente eu nao me lembro de cabeca as notacoes em relacao aos algoritmos (pq eu nao to aplicando para cenarios que precisa e enfim)
ah as b-treeeeees....
O microfone é tão bom que o meio volume é equivalente ao volume máximo em outros canais, rs.
A minha pergunta não tem nada haver com o vídeo.
Então Lucas, me diz oq você realmente pensa sobre o mercado atual. Ainda tem espaço pra estudantes? É possível entrar como júnior ainda? Principalmente home office, pra quem mora em cidades que não tem vagas pra desenvolvimento? Qual você acha que é a maior dificuldade pra quem está começando na área agora e qual é o melhor maneira de se aprender sobre o mercado e oq está em alta?
São várias coisas mas eu agradeceria muito uma resposta sua
Não sou o Lucas mano, mas tem sim vagas para junior (não é como se a profissão fosse acabar), a maioria das vagas são remotas, e para ver o que está em alta no mercado procure pelas vagas e o que elas estão exigindo.
@@marcosalves9853 obrigado pela resposta, eu tenho essa dúvida pois tenho visto muita gente reclamar que aplica pra mais de 100 vagas e não consegue de jeito nenhum entrar no mercado de trabalho. Isso me faz questionar um pouco se ainda vale a pena investir anos na área
Assiste o video do Fabio Akita "a bolha de startups estourou ?" Entao aproveita, na verdade a melhor hora pra estudar é agora daqui alguns anos quando o mercado voltar a subir você já estará pronto para o mercado
Livro da faculdade: Assim, A(n) = p1xC1 + p2xC2 + ... + pn + 1xCn+1, logo obviamente pode se concluir que A(n) = O( log n)
Eu: sim, é claro, é óbvio, entendi tudo 😐
Essa coisa de "depende do teu hardware" envolve justamente o propósito de notações de complexidade: avaliar o desempenho do algoritmo em si, sem levar em consideração fatores específicos de onde vai ser rodado e tal
E pra comparar desempenhos, acho que nem precisava falar de árvores binárias diretamente, só assumir que o array sendo percorrido pra busca está com os elementos ordenados :D
Até porque talvez tu esteja querendo falar de árvores binárias de pesquisa, que é um assunto mais específico fldskjf
btw acho que a implementação de `std::map` no gcc em C++ usa red-black trees, que é um tipo de árvore binária de busca com balanceamento que se estuda em cadeiras de estruturas de dados na faculdade dlskfj
Ba Lucas, tu podia fazer um vídeo sobre a frase "Não é como se tu fosse, sei lá, um programador e precisasse saber disso"... quais são os dissos além desse disso? hahahah
Me fez lembrar as provas da faculdade que o professor davas um trecho de codigo e pergunta qual era o BIG O.
Muito interessante
Que vídeo bom !!
Se eu não estiver enganado. Uma arvore binária é básicamente uma arvore de listas ligadas, onde cada nodo contem alem do dado associado ao nodo, ponteiros para os próximos nodos na arvore, fazendo assim, uma estrutura parecida com uma... arvore, tipo o nodo principal, ou original é como se fosse a raiz, e os outros nodos são galhos, a raiz tem ponteiros para galhos, que por sua vez tem ponteiros para outros galhos, até chegar no final da arvore binária.
Eu acho que é isso... assumindo q eu não esteja confundindo com outra estrutura...
Ter ponteiros ou listas ligadas entra muito em detalhe de implementação e não conceitual
Acho que dá pra definir recursivamente assim:
Uma árvore binária é ou:
- vazio (e.g. um ponteiro nulo);
- ou um nodo contendo um valor de algum tipo, e duas árvores binárias
@@arsnakehert Tbm, mas é pq eu tô pegando da memória da minha aula de algoritimos q eu tive, a gente tava usando a linguagem C. Por isso que tava incluindo conceitos como ponteiros e listas ligadas.
Lucas, tava meio bêbado ontem e deixei um comentário que lendo hj ficou rude. A dica e valida, eu tenho esse microfone tbm e ele captura o som muito bem a distância. E quando você agarra ele e fala direto nele o som da minha tv vai lá pra cima.
Mas espero que você perdoe o tom do meu comentário de ontem. Curto seus vídeos e torço pelo seu sucesso.
a sara já tinha me alertado sobre esse meu problema hehe não esquenta
Quando entra nos algoritmos de busca e ordenação que o Big O fica doido hahaha
Resumindo, com notação O você consegue ver se o seu algoritmo é bom ou uma bela 💩!! Recomendo o Livro Algoritmos do Cormen da capa vermelha (mas em INGLÊS), há diversos erros na versão em português.
Muito bem observado Lucas, hoje faltam programadores que tenham noção disso.
Árvore binária/busca binária seria o mesmo que o método [MERGE SORT]?
Nada melhor que come o Lucas montano enquanto assisto ao almoço
Lucas
Montano
Lucas
...
A 5ª série que habita em mim, saúda a 5ª que habita em você
Muito bom esses vídeo falando sobre algoritmos, já pensou em fazer uma série de vídeo fazendo exemplos de algoritmos e mostrando complexidade de espaço e tempo? Acredito que a maioria dos vídeo que tem isso é uma visão muito voltada para faculdade e muitas vezes só tem pseudo código
já tem no canal, video sobre o algoritmo em python mais performatico
CS 50 week3. Exatamente onde estou há 2 semanas 😂
Muito bom, só uma observação: println é O(N) e não O(1)
Mais vídeos sobre Algoritmos por favor
O tempo do like me pegou ahahah
Que video brabo
Eu preciso revisar a matéria que fala disso na faculdade.
Matéria estrutura de dados de sistema de informação, saudades
Vou assistir dnv quando eu terminar o curso de Algoritmos da FreeCodeCamp
Me corrija se eu estiver errado por favor, mas entendi que O de linhaXcoluna ou O número total de quadradinhos, seria a mesma coisa certo?!
atualizando os likes e comments
Mano, isso nunca fica pronto não???
Sempre que entro aqui nesse canal e olha que eu entro sempre, tu sempre tá montano. Para de fazer corpo mole e termina isso logo.
Valeu pelo vídeo!