Mergesort

di il
1 risposte

Mergesort

Buongiorno gente ,ho un problema con questo codice che ho appena scritto,la stampa e l'inserimento funzionano però subito dopo mi dici che il programma ha smesso di funzione...mi potete dare una mano perfavore;)

/* merge sort*/

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

void inserimento(int [], int);
void stampa(int [], int);
void mergesort1(int [], int, int);
void finalmergesort(int [],int,int,int);
main(){

int n;
printf("Inserisci il numero di element che deve contenere il vettore\n");
scanf("%d",&n);

int v[n];


inserimento(v,n);
stampa(v,n);
mergesort1(v,0,n);
// stampa(v,n);
}



void inserimento(int a[],int d){
int i;
for(i = 0 ; i<=d;i++){
printf("Inserisci elelemento\n");
scanf("%d",&a);
}
}


void stampa(int a[], int d){
int i;

for(i=0;i<= d;i++){
printf("%d\n",a);
}
}


void mergesort1(int k[], int inizio, int fine){

if(inizio<=fine){
int m;
m =((inizio+fine)/2);
mergesort1(k,inizio,m);
mergesort1(k,m+1,fine);

finalmergesort(k,inizio,m,fine);
}
}

void finalmergesort(int A[],int inizio,int mezzo,int fine){
int a,b,c;
a=inizio;
b=mezzo;
c=0;
int B[3000];

while(a<=mezzo && b<=fine){
if(A[a]<=A){
B[c]=A[a];
a++;
}else{
B[c]=A;
b++;
}
c++;}

while(a<=mezzo){
B[c]=A[a];
a++;
c++;
}

while(b<=fine){
B[c]= A;
b++;
c++;
}

int x,y;

for(x=inizio,y=0;c<=fine;x++,y++){
A[x]=B[y];
}


}

1 Risposte

  • Re: Mergesort

    Intanto nell'inserimento e stampa questo controllo

    i<=d

    è sbagliato e dovrebbe essere

    i<d

    dato che l'indice dei vettori va da 0 a n-1

    Questi sono errori da correggere ma non sono la causa del malfunzionamento che sta nella funzione di ordinamento a cui non ho dato ancora un'occhiata approfondita.-
Devi accedere o registrarti per scrivere nel forum
1 risposte