Está en la página 1de 2

#include<iostream>

#include<fstream>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<ctime>
using namespace std;
void heapify(int datos[], int Centro, int i)
{
int Tamanio = i;
int Izquierda = 2*i + 1;
int Derecha = 2*i + 2;

if (Izquierda < Centro && datos[Izquierda] > datos[Tamanio])


Tamanio = Izquierda;

if (Derecha < Centro && datos[Derecha] > datos[Tamanio])


Tamanio = Derecha;

if (Tamanio != i) {
swap(datos[i], datos[Tamanio]);
heapify(datos, Centro , Tamanio);
}
}

void heapSort(int datos[], int Centro) {


for (int i = Centro / 2 - 1; i >= 0; i--)
heapify(datos, Centro , i);

for (int i= Centro-1; i>=0; i--) {


swap(datos[0], datos[i]);
heapify(datos, i, 0);
}
}

void imprimir(int datos[], int Centro) {


ofstream envio;
envio.open("d://investigacion 2//ordenado/headsort 50000.txt",ios::out);
for (int i=1; i<=Centro; ++i)
{

if(i<49999)
{
envio<<datos[i]<<",";
}
else
{
envio<<datos[i];
}
}
}
using namespace std;
int main()
{
ifstream lectur("dataset1.txt",ios::in);
clock_t tiempo;
if(lectur.fail())
{
cout<<"no se lee el archivo"<<endl;
exit(1);
}
char datos[1000000];
while(!lectur.eof())
{
lectur>>datos;
}
int longh;
longh=strlen(datos);
int i;
int j=0;
int enteros[50000];
int c=0;
char caracteres[5];
for( i=0;i<=longh;i++)
{
if(datos[i]!=',')
{
caracteres[j]=datos[i];
j++;
}
else
{
for(int k=0;k<5;k++)
{
if(j<=k)
{
caracteres[k]=' ';
}
}
c++;
enteros[c]=atoi(caracteres);
j=0;
}
}
c++;
enteros[c]=atoi(caracteres);
int Centro = sizeof(enteros)/sizeof(enteros[0]);
heapSort(enteros, Centro);
imprimir(enteros, Centro);
tiempo=clock()-tiempo;
cout<<"El tiempo en milisegundo es: "<<(float(tiempo)*1000)/CLOCKS_PER_SEC;
}

También podría gustarte