Ir ao conteúdo
  • Cadastre-se

C++ MergeSort com demonstração dos passos


Posts recomendados

Dada a sequência de números: 10 - 64 - 87 - 30 - 66 - 58 - 25 - 97, ordene em ordem crescente utilizando o algoritmo MergeSort, apresentando a sequência dos números a cada passo do algoritmo. Como citamos na Aula 5, o algoritmo MergeSorte tem como base principal o método dividir-para-conquistar, este método por sua vez é composto de algumas etapas que devem ser seguidas. Seguir estas etapas e bom trabalho!

Eu já estou com o mergesort implementado e testado. Contudo, não estou conseguindo inserir de forma correta os comandos de impressão (saída de dados) para que ele mostre o "passo a passo" do programa. Alguém poderia me ajudar?

 

#include <iostream>
#include <stdio.h>
using namespace std;
void intercalar (int v[],int aux[],int ini1, int ini2,int fim2)
{
 int in1=ini1,in2=ini2,fim1=in2-1,au=0,i;
 while(in1<=fim1 && in2<=fim2)
 {
  if (v[in1]<v[in2])
  {
   aux[au++] = v[in1++];
   printf("%d\t", aux[au++]); //uma das minhas tentativas aqui, mas não estou obtendo êxito
   }
  else
  {
   aux[au++] = v[in2++];
    }
 }
 while(in1<=fim1)
 {
  aux[au++] = v[in1++];

 }
 while(in2<=fim2)
 {
  aux[au++] = v[in2++];

 }
 
 for(i=0;i<au;i++){
  v[i+ini1]=aux;}

}
void mergeSort (int v[], int aux[],int esq, int dir)
{
 int meio,i;
 if(esq<dir)
 {
  meio=(esq+dir)/2;
  mergeSort(v,aux,esq,meio);
  mergeSort(v,aux,meio+1,dir);
  intercalar(v,aux,esq,meio+1,dir);  
 }
}
int main()
{
 int v[8]={10, 64, 87, 30, 66, 58, 25, 97},aux[8],i;
 mergeSort(v,aux,0,7);
 for(i=0;i<8;i++)
 {
  printf("%d\t",v);
 }
 return 0;
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...