Nella partition,invece di :

codice:
for(j=0; j<N; j++){...}
Non ci dovrebbe essere:

codice:
for(j=p;j<r;j++){...}
?