ciao ho guardato un pò il codice e mi pare che sia corretto, hai solo dimenticato che nella funzione di insert() nell'else hai messo:
codice:
pi[t]=x;
mentre secondo me va benissimo se lo metti prima che ordini il vettore:
codice:
...
else {
       pi=(int*)realloc(pi,(i+1) * sizeof(int));
       pi[i] = x;
       for(t=i; t>=0;t--) {
           for(j=0;j<t;j++) {             
               if (pi[j]>pi[j+1]){                 
                  temp=pi[j];
                  pi[j] = pi[j+1];
                  pi[j+1]=temp;
               }
           }
       }
    }
...
e infine un'altra cosa, nella stampa non ciclare fino a i:
codice:
j<=i;
ma cilca solo fino a j < i;