In realtà secondo me non è nemmeno difficile fare un ordinamento ricorsivo,basta mettere all' angolo l' elemento più piccolo e richiamare la funzione finchè non hai messo all' angolo tutti gli elementi,creando una specie di recursive sort,eccone una:
codice:
void *sort(int *pointer,int num)
{
    int i;
    for(i=1;i<num;i++)
    {
        if(pointer[0]>pointer[i])
            swap(pointer,&pointer[i]);
    }
    if(i!=2)                                        // In questo caso sono rimasti solo due elementi,non si prosegue
        sort(&pointer[1],num-1);
}