codice:
void sel_sort(float *A, int n)
{
int i, j, p, min;

for (i=0; i<n-1; i++) {
    min = A[i];
    p = i;
        for (j=i+1; j<n; j++){
                if (A[j]<min)
                {
                 min = A[j];
                 p = j;
                 A[p] = A[i];
                 A[i] = min;
                }
           
        }
}
}
ricchione... mettevi:
A[p] = A[i];
A[i] = min;

fuori dall'if.. ovvero lo faceva anche se l'elemento corrente era maggiore del minimo