Problemas com MergeSort

1. Problemas com MergeSort

Luiz Felipe
Luiz314

(usa Ubuntu)

Enviado em 11/10/2015 - 16:19h

Pessoal, estou tendo problemas para ordenar um vetor usando o Merge Sort. A função particiona o vetor, mas não está ordenando os elementos. Aparece o seguinte erro: " ***stack smashing detected***". Segue o código que eu desenvolvi.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 10

void Intercala(int inicio, int meio, int final, int v[]){

int temp[MAX];
int I, M, i=0;

I = inicio;
M = meio;

while((I < M) && (M < final)){

if(v[I] <= v[M] ){
temp[i] = v[I];
I++;
i++;
}
else{
temp[i] = v[M];
M++;
i++;
}
}

while(I < M){
temp[i] = v[I];
i++;
I++;
}

while(M < final){
temp[i] = v[M];
i++;
M++;
}

for(i=inicio; i< final; i++){
v[i] = temp[i-inicio];
}
}

void MergeSort(int esquerda, int direita, int v[]){
int meio;

if(esquerda < direita){

meio = (esquerda + direita)/2;

MergeSort(esquerda, meio, v);
MergeSort(meio+1, direita, v);
Intercala(esquerda, meio+1, direita, v);
}
}

int main(){

int v[MAX];
int i;

printf("Merge Sort\n");

srand(time(NULL));

printf("Dados do Vetor: ");
for(i=0; i<MAX; i++){
v[i] = rand()%100;
printf("%d ", v[i]);
}

MergeSort(0, MAX, v);
printf("\nVetor ordenado: ");
for(i=0; i<MAX; i++){
printf("%d ", v[i]);
}
printf("\n");
return 0;
}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts