Problema com algoritmo de ordenacao [RESOLVIDO]

1. Problema com algoritmo de ordenacao [RESOLVIDO]

Erick Castro
gtrbarata

(usa Ubuntu)

Enviado em 30/11/2018 - 13:44h

Olá amigos, meu professor me passou um trabalho que é elaborar um programa em C onde se gera um arquivo TXT com números de 0 a 999 de forma aleatória e que esse arquivo tenha o tamanho de 2gb, posteriormente abra esse mesmo TXT. ordene todos os valores e salve em um novo arquivo...usei o método Quicksort, testei com diversos valores, até 1gb funciona bacana, mas com 2gb ele dá um erro de execução logo após ter criado o primeiro TXT ( desordenado ). alguém tem ideia de oque pode estar ocasionando esse erro ?


  


2. Re: Problema com algoritmo de ordenacao [RESOLVIDO]

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 30/11/2018 - 14:26h

Talvez uma otimização no seu Quicksort te ajude.
Veja nessa apresentação algumas sugestões de otimização:
https://homepages.dcc.ufmg.br/~cunha/teaching/20121/aeds2/quicksort.pdf 


Abraço,
Diego M. Rodrigues


3. Re: Problema com algoritmo de ordenacao

Erick Castro
gtrbarata

(usa Ubuntu)

Enviado em 01/12/2018 - 21:08h

tentei de tudo mas continua dando o maldito erro...vou postar o código, se não for atrapalhar, poderia dar uma analisada por favor ?iniciei em C nesse semestre, tudo é muito novo pra mim...obrigado

#include <stdio.h>
#include <stdlib.h>
#define num 555698376
//277849188 <--- 1 gb //
//555698376 <--- 2 gb //

void quick_sort(int *p, int inicio, int fim){
int i, j, pivo, aux;

i=inicio;
j=fim-1;
pivo=p[(inicio+fim)/2];
while(i<=j){
while(p[i]<pivo && i<fim){
i++;
}
while(p[j]>pivo && j>inicio){
j--;
}
if(i<=j){
aux = p[i];
p[i] = p[j];
p[j] = aux;
i++;
j--;
}
}
if(j > inicio)
quick_sort(p, inicio, j+1);
if(i < fim)
quick_sort(p, i, fim);
}
int main()
{
int *p;
p = (int*)malloc (num * sizeof(int));
int i;
int n;
FILE *pFile;
pFile = fopen ("teste.txt","w");
for(n=0;n<=num;n++)
{
fprintf (pFile,"%d ",rand()%1000);
}
FILE *orde;
orde = fopen ("teste.txt","r");
for(i=0; i<num; i++)
{
fscanf(orde,"%d ", &p[i]);
}
orde = fopen ("teste2.txt","w");
quick_sort(p, 0, num);

printf("Valores ordenados");

for(i=0; i<num; i++){
fprintf(orde,"%d ",p[i]);
}
}



4. Re: Problema com algoritmo de ordenacao [RESOLVIDO]

Erick Castro
gtrbarata

(usa Ubuntu)

Enviado em 02/12/2018 - 22:36h

Galera, consegui resolver o problema, achei importante voltar e dizer como resolvi...acabei descobrindo que o problema não era no meu código, e sim no compilador que era 32bits ( codebloks ) instalei o devc++ e usei o compilador 64 bits funcionou bacana...grande abraço Diego, obrigado pela força !!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts