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!