ciao a tutti
stavo implementando un quick sort in C il codice è perfetto ma dopo aver eseguito e inserito i valori in input il programma non mi restituisce l output, si blocca e va in errore (chiedendomi di inviare segnalazioni).
non capivo dov'era l errore e ho messo dei printf("") spia per capire qual'è la parte che creava il problema.
codice:
#include <stdio.h>
#define N 5
void quicksort(int a[N], int p, int r){
printf("invocazione riuscita \n");
int q;
if(p<=r){
printf("primo if valutato\n");
q=partition(a,p,r);
printf("partition eseguito\n");
quicksort(a,p,q-1);
printf("lancio quicksort");
printf("prima ricorsione riuscita\n");
quicksort(a,q+1,r);
printf(" seconda ricorsione riuscita\n");
}
}
int partition(int a[N], int p, int r){ //CREDO CHE IL PROBLEMA SIA QUA
int x;
int i;
int j;
x=a[r];
i=p-1;
for(j=0; j<N; j++){
if(a[j]<=x){
i=i+1;
int temp=i;
a[i]=a[j];
a[j]=a[temp];
}
}
int temp1=i+1;
a[i+1]=a[r];
a[r]=a[temp1];
return i+1;
}
void stampa(int a[N]){
int i;
for(i=0; i<N; i++)
printf("%d",a[i]);
}
main(){
int a[N];
int i;
for(i=0; i<N; i++){
scanf("%d",&a[i]);
}
printf("ok\n\n");
quicksort(a,1,N);
stampa(a);
system("PAUSE");
}
stampa all infinito solo "invocazione riuscita" "primo if valutato" e "partition eseguito", non esce mai da partition, sto cercando di mettere altre spie ma è da un pò che ci sbatto la testa e non arrivo alla conclusione, qualcuno sa darmi una mano?
grazie mille!