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.
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?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"); }
grazie mille!

Rispondi quotando