Estrutura de Dados em C | Aula 51 - Ordenação - MergeSort

Поділитися
Вставка
  • Опубліковано 17 гру 2024

КОМЕНТАРІ • 68

  • @raulnascimento3432
    @raulnascimento3432 Рік тому +1

    Melhor professor de ed que ja vi, parabéns!

  • @diegorosadossantos8493
    @diegorosadossantos8493 8 років тому +21

    caralho mano, melhor explicação que já vi, geralmente outros vídeos mostram somente a lógica, mas nunca explicam o código, parabéns professor pela explicação!

  • @Nei月牙天衝-y7u
    @Nei月牙天衝-y7u 8 років тому +55

    Como é possível ninguem comentar essa intro de Lost Painting do Castlevania?
    Professor, acompanho suas aulas faz algum tempo e são muito boas. Meus parabéns! E essas intros são sensacionais também! Sucesso para você e sua equipe.

    • @gustavovictor3903
      @gustavovictor3903 8 років тому

      Essa musica é muito boa

    • @edvansousa1270
      @edvansousa1270 7 років тому +1

      melhor professor, melhores aulas, melhor didática ..... grande trabalho.

    • @PauloVitor-rv5dc
      @PauloVitor-rv5dc 4 роки тому +1

      bixo, ele faz cada intro top, tu já viu a do fzero?

    • @Lordbiron
      @Lordbiron Рік тому

      Pois é carai, vi e voltei dizendo "eu conheço essa música" hahahaha, muito bom, deu até vontade de jogar ele novamente (mais uma vez).

  • @enzobelem9811
    @enzobelem9811 4 роки тому +2

    Lost Painting na intro... simplesmente perfeito

  • @ygorsalles4032
    @ygorsalles4032 5 років тому +4

    Melhor didática que encontrei no you tube para estrutura de dados, mesmo essa matéria de ordenação sendo complexa.
    Vou ter que rever esse video umas 10 vezes pra entender kkk

  • @diegorafael7218
    @diegorafael7218 3 роки тому +1

    Explicação top de mais, eu aprendo mais no youTube que na faculdade.

  • @LuizFernando-nk1xl
    @LuizFernando-nk1xl 4 роки тому

    Perfeito! Melhor vídeos explicativo. Na verdade, melhores vídeos explicativos, são os seus. Muito obrigado pela aula!

  • @peixefelipe16
    @peixefelipe16 5 років тому +2

    Caraio, eu aqui rushando algoritmos de ordenação pq vou fazer P2 daqui a pouco e você vem com essa OST do Symphony of the Night Lost Painting, pqp, chorei.

  • @mateus3974
    @mateus3974 4 роки тому +3

    Essa intro do castlevania

  • @joaogabrieldecamposdematos9034
    @joaogabrieldecamposdematos9034 3 роки тому

    Melhor explicação que eu encontrei, parabéns professor.

  • @deilsoncassimiromendes6350
    @deilsoncassimiromendes6350 3 роки тому

    Aula bem esclarecedora, melhor que na facul.

  • @motinha6185
    @motinha6185 2 роки тому

    Caralho mano que vídeo bom, só consegui entender vendo o código pronto.

  • @or4cl3br
    @or4cl3br 2 роки тому +1

    Só irei comentar devido a intro de Castlevania SotN, é como se eu voltatasse no tempo. Se não me engano era no mapa das medusa

    • @gamisplay
      @gamisplay 2 місяці тому

      Eu ouvi a abertura e me bateu umas nostalgia e eu não lembrava de onde kkkkkkkkk

  • @henriquefc14
    @henriquefc14 10 років тому +13

    Uma outra abordagem ideal seria o MergeSort com Listas encadeadas!

    • @kanicsbrel82
      @kanicsbrel82 Рік тому

      iria ser massa ein, vc tem o código?

  • @jesanabraga3919
    @jesanabraga3919 8 років тому +2

    MELHOR EXPLICAÇÃO!!

  • @emanuelafonsocoimbra1511
    @emanuelafonsocoimbra1511 7 років тому

    Parabéns!!! Muito obrigado pela aula excepcional. Está sendo essencial pra minha p2 aqui da UFF.

    • @emanuelafonsocoimbra1511
      @emanuelafonsocoimbra1511 7 років тому

      Estava muito difícil encontrar alguma aula que prestasse, mas gostei muito dessa playlist. Valeu mesmo...indo me inscrever no canal agora!!! hahahaha

    • @Gabriel-co6un
      @Gabriel-co6un 5 років тому

      @@emanuelafonsocoimbra1511 Sei q já faz 2 anos, mas agora na uff eles vão cobrar isso na p1 kkk. Mergesort, Quicksort, alguns quebra cabeças recursivos como hanoi e um chinês lá, tá bem osso. :(

  • @_carlaque
    @_carlaque 4 роки тому

    excelente aula me ajudou muito, valeu professor pelo canal

  • @andrepjds
    @andrepjds 2 роки тому

    Aulas Muito boas👏

  • @acurtic09
    @acurtic09 10 років тому +2

    Como poderia fazer esta questao ?
    Faça um programa que dado uma string, coloque as letras dela em ordem crescente pelo algoritmo MergSort.

    • @LuisAntonio-sc3ub
      @LuisAntonio-sc3ub 6 років тому

      Cada letra corresponde a um número, o A por exemplo corresponde ao número 65, então bastava mudar int* para char* que o alg ja funcionaria perfeitamente

    • @LuisAntonio-sc3ub
      @LuisAntonio-sc3ub 6 років тому

      Fiz em C++ para usar algumas coisas a mais, mas nada critico.
      #include
      using namespace std;
      void merge(char* vetor, int begin, int middle, int end) {
      int p1 = begin;
      int p2 = middle + 1;
      int size = end - begin + 1;
      int* vetor_aux = (int*)malloc(sizeof(int) * size);
      bool fim1 = false, fim2 = false;
      if(vetor_aux != NULL) {
      // percorrendo o vetor auxiliar
      for(int i=0;i middle) ? true : false;
      fim2 = (p2 > end) ? true : false;
      } else {
      // caso tenha chegado ao final de alguma metade
      // basta inserir o restante da outra metade no vetor_aux
      if(fim1)
      vetor_aux[i] = vetor[p2++];
      if(fim2)
      vetor_aux[i] = vetor[p1++];
      }
      }
      // copia o vetor_aux para o vetor original
      for(int i = begin, j = 0; j < size; ++i, ++j)
      vetor[i] = vetor_aux[j];
      }
      free(vetor_aux);
      }
      void merge_sort(char* vetor, int begin, int end) {
      if(begin < end) {
      int middle = (int)(begin + end) / 2.0;
      merge_sort(vetor, begin, middle);
      merge_sort(vetor, middle + 1, end);
      merge(vetor, begin, middle, end);
      }
      }
      int main() {
      char vetor[] = {"HGFEDCBA"};
      merge_sort(vetor, 0, 7);
      for(auto x:vetor) cout

  • @davidbruno3338
    @davidbruno3338 6 років тому

    oq aconteceria se o variavel meio na função mergesort recebesse recebesse o valor fim no lugar de (flor(inicio+fim)/2), e a complexidade desse algoritimo como ficaria???

  • @natan2624
    @natan2624 8 років тому +3

    Qual a função do "floor" que aparece nos 2.25 minutos? arredondar o resultado da divisão?

    • @progdescomplicada
      @progdescomplicada  8 років тому +1

      +Natan Pedersolli Sim, é para arredonda para baixo. Assim, 2.7, por exemplo, virá 2.0.

    • @vinipostagem
      @vinipostagem 6 років тому +2

      @@progdescomplicada Mas a variável que recebe o resultado é um int, no caso, 2.7 vira 2 na variável mesmo sem o floor, certo?!

    • @victorlaercio4277
      @victorlaercio4277 Рік тому

      ​@@vinipostagemsim, em C sim

  • @nicolas_mendes
    @nicolas_mendes Рік тому

    Na parte do código
    if(V[p1] < V[p2])
    {
    temp[i] = V[p1++];
    } else {
    temp[i] = V[p2++;
    }
    não seria if(V[p1]

  • @kublaikhan6808
    @kublaikhan6808 3 роки тому

    qual sond track teve no começo do video desta vez ?

  • @BrianMaia
    @BrianMaia 6 років тому

    Excelente! Muito obrigado!!

  • @fernandohenrique993
    @fernandohenrique993 3 роки тому

    Ótima explicação! Poderia disponibilizar esse código?

  • @jefersonalves83
    @jefersonalves83 3 роки тому

    incrível explicação!!!

  • @MariaHelenaBianchi12
    @MariaHelenaBianchi12 4 роки тому

    Obrigada pelo video!!

  • @HerbertNicolass
    @HerbertNicolass 7 років тому

    MUITO boa a aula

  • @lucasbarbosa3937
    @lucasbarbosa3937 3 роки тому

    Para quê serve o floor?

  • @user-lm2dw7ss7c
    @user-lm2dw7ss7c 7 років тому

    Excelente!

  • @iorrananascimento2892
    @iorrananascimento2892 5 років тому

    Suas aulas são ótimas, mas um detalhe que me incomoda bastante é a questão do eco da voz, mas enfim, é sensacional

  • @alonsom7930
    @alonsom7930 5 років тому

    boa noite, então professor gostaria de saber como colocar um numero aleatório nesse programa:
    #include
    #include
    #include
    #include
    #include
    typedef struct detalhes_s
    {
    int comps; /* Quantidade de comparacoes */
    int trocas; /* Quantidade de trocas */
    unsigned long duracao_us; /* Tempo total de processamento em microsegundos */
    } detalhes_t;
    void merge( int *array, int inicio, int meio, int fim, detalhes_t *detalhes )
    {
    int *vetAux, p1, p2, tamanho, i, j, k;
    int fim1 = 0, fim2 = 0;
    tamanho = fim - inicio + 1;
    p1 = inicio;
    p2 = meio + 1;
    vetAux = (int *) malloc( tamanho * sizeof(int) );
    if(vetAux != NULL){
    for(i = 0; i < tamanho; i++){
    if(!fim1 && !fim2){
    detalhes->comps++;
    if(array[p1] < array[p2]){
    vetAux[i] = array[p1++];
    detalhes->trocas++;
    }
    else{
    vetAux[i] = array[p2++];
    detalhes->trocas++;
    }
    if(p1 > meio)
    fim = 1;
    if(p2 > fim)
    fim2 = 1;
    } else {
    detalhes->comps++;
    if(!fim1){
    vetAux[i] = array[p1++];
    detalhes->trocas++;
    }
    else{
    vetAux[i] = array[p2++];
    detalhes->trocas++;
    }
    }
    }
    for(j = 0, k = inicio; j < tamanho; j++, k++){
    array[k] = vetAux[j];
    }
    }
    free(vetAux);
    }
    void mergeSortR(int *array, int inicio, int fim, detalhes_t *detalhes )
    {
    int meio;
    if(inicio < fim) {
    meio = floor( (fim + inicio) / 2 );
    mergeSortR( array, inicio, meio, detalhes );
    mergeSortR( array, meio+1, fim, detalhes );
    merge( array, inicio, meio, fim, detalhes );
    }
    }
    void mergeSort(int *array, int inicio, int fim, detalhes_t *detalhes )
    {
    struct timeval t0, t1;
    /* Inicializa estrutura de detalhes */
    detalhes->comps = 0;
    detalhes->trocas = 0;
    gettimeofday(&t0, NULL);
    mergeSortR( array, inicio, fim, detalhes );
    gettimeofday(&t1, NULL);
    /* Calcula tempo de processamento */
    detalhes->duracao_us = ((t1.tv_sec - t0.tv_sec) * 1000000L) + (t1.tv_usec - t0.tv_usec);
    }
    int main( void )
    {
    unsigned int i;
    detalhes_t info;
    /* Vetor */
    int foobar[16] = { 10, 2, 5, 8, 9, 7, 1, 3, 4, 6, 0, 5, 1, 8, 6, 5 };
    /* Exibe Vetor de entrada */
    for( i = 0; i < sizeof(foobar) / sizeof(int); i++ )
    printf( (i==0) ? "Entrada=%d" : ",%d", foobar[i] );
    printf("
    ");
    /* Ordena vetor */
    mergeSort( foobar, 0, 15, &info );
    /* Exibe vetor ordenado */
    for( i = 0; i < sizeof(foobar)/ sizeof(int); i++ )
    printf( (i==0) ? "Saida=%d" : ",%d", foobar[i] );
    printf("
    ");
    /* Exibe Informacoes */
    printf( "Comparacoes: %d
    ", info.comps );
    printf( "Trocas: %d
    ", info.trocas );
    printf( "Duracao: %ldus
    ", info.duracao_us);
    return 0;
    }
    tentei porem nao consegu, poderia me da uma força ?

    • @progdescomplicada
      @progdescomplicada  5 років тому

      Para números aleatórios vc vai precisar das funções srand() e rand(): www.cplusplus.com/reference/cstdlib/rand/

  • @SBonifacioJr
    @SBonifacioJr 10 років тому

    Muito bom!

  • @raphaells2436
    @raphaells2436 7 років тому +1

    Amigos o que é !fim1 ?
    Sei que talvez o ! seria o contrário de algo, mas o que seria no código?

    • @progdescomplicada
      @progdescomplicada  7 років тому

      fim1 e fim2 indicam se a primeira e segunda metades do vetor V já acabaram. Eles começam com 0 (falso) e !fim1 é verdadeiro (1).
      if(!fim1 && !fim2)
      equivale a
      if(fim1 == 0 && fim2 == 0)

    • @dontcare8426
      @dontcare8426 7 років тому

      fim1 começa com falso, quando negamos isso (!fim1), se torna verdadeiro, portanto, se fim1 começa com 0, quando negado vira 1.

  • @nayaradejardinandopelomundo
    @nayaradejardinandopelomundo 7 років тому +1

    Muito obrigadaaaaaaaaaaaaaa

  • @zanzaraloggan3713
    @zanzaraloggan3713 7 років тому

    muito booom!!

  • @lpsinformatica5882
    @lpsinformatica5882 7 років тому

    Boa Noite!! poderia disponibilizar o código por e-mail?

    • @progdescomplicada
      @progdescomplicada  7 років тому

      programacaodescomplicada.wordpress.com/complementar/

  • @kanicsbrel82
    @kanicsbrel82 Рік тому

    Nossa! Parecia ser mais dificil com o professor mostrando em sala de aula.

  • @nidnogg
    @nidnogg 7 років тому +4

    compra um microfone melhor por favor mas fora isso os videos estao muito bom parabens amigo jhahahhahahah

  • @destroyerbiel
    @destroyerbiel 7 років тому

    Castlevania!!

  • @joaorobertogilcavina1721
    @joaorobertogilcavina1721 3 роки тому

    FInalmente uma aula que nao tem dancinha
    #luciadanceinap3

  • @fernandozanutto7638
    @fernandozanutto7638 6 років тому

    Parece o sheldon do the big ben theory