Está en la página 1de 4

metodo mezcla en code::blocks

.h

#ifndef MEZCLA_H
#define MEZCLA_H

const int n=5;// este valor puede estar sujeto a la cantidad de numero a ordenar.

class mezcla
{
private:
int vec[n];
public:
mezcla(); // class constructor
~mezcla(); // class destructor
void setvec(int p,int ve);
int getvec(int p);
void mezclar(int vec[],int izq, int der, int centro);//metodo que mezcla las posiciones
void ordenarmezcla(int p,int q);//metodo que ordena
protected:
};

#endif

_________________________________________________________________________
________
.cpp

#include "mezcla.h"
#include <iostream>

// class constructor
mezcla::mezcla()
{
}
// class destructor
mezcla::~mezcla()
{
}
void mezcla::setvec(int p, int ve)
{
vec[p]=ve;
}
int mezcla::getvec(int p)
{
return vec[p];
}
void mezcla::mezclar(int vec[], int izq, int der, int centro)
{
long double Cont;
int i=izq;
int j=centro+1;
int* aux= new int[der-izq+1]; //vector auxiliar
int c=0;
while ((i<=centro)&&(j<=der))
{
Cont++;
if(vec[i]<vec[j])
{
aux[c]=vec[i];
i++;
}
else
{
aux[c]=vec[j];
j++;
}
c++;
}

while(i<=centro)
{
aux[c]=vec[i];
i++;
c++;
}
while(j<=der)
{
aux[c]=vec[j];
j++;
c++;
}

for(i=0;i<c;i++)
{
Cont++;
vec[i+izq]=aux[i];
}
}
void mezcla::ordenarmezcla(int p,int q)
{
long double Cont;
Cont++;
int centro=0;
if (p<q)
{

centro=(p+q)/2;
ordenarmezcla(p,centro);
ordenarmezcla(centro+1,q);
mezclar(vec,p,q,centro);
}

}
_________________________________________________________________
______________

main

#include <cstdlib>

using namespace std;

int main() {
int ve,i;
mezcla obj;
cout<<"***************ordenamiento por el metodo merge
sort***************\n";
cout<<"\n";
for (i=0;i<=n-1;i++){
cout<<"Ingrese el valor en la posicion "<<i<<": ";
cin>>ve;
obj.setvec(i,ve);
}
cout<<"la respuesta del metodo de ordenamiento merge sort es:"<<endl;
obj.ordenarmezcla(0,n-1);

for (i=0;i<=n-1;i++){

cout<<obj.getvec(i)<<" ";
}
cout<<"\n\n";
system("pause");
return EXIT_SUCCESS;
}

También podría gustarte