読むと同時に並べ替えるのが最善の方法です。配列ではなくリンクリストにデータを保存すると、並べ替えがより効率的になります
fscanf()ファイルから整数ごとに読み取るために使用できます。ファイルから整数を読み取った時点でソートしてみてください。つまり、ファイルから整数を読み取るときは、読み取りが終了したときに配列を並べ替えるために、適切な場所の配列に整数を配置します。
次の例では、ファイルを整数ごとに読み取り、読み取りと同時に並べ替えて挿入します。整数はリンクリストではなく配列に保存されます
void sort_insert(int x, int *array, int len)
{
    int i=0, j;
    for(i=0; i<(len-1); i++)
    {
        if (x > array[i])
            continue;
        for (j=(len-1); j>i; j--)
            array[j] = array[j-1];
        break;
    }
    array[i] = x;
}
void main() {
    int x, i;
    int len = 0;
    int array[50];
    FILE *fp = fopen("myfile.txt", "r");
    while (len<50 && fscanf(fp, " %d",&x)>0)
    {
        len++;
        sort_insert(x, array, len);
    }
    for (i=0; i<len; i++)
    {
        printf("array[%d] = %d\n", i, array[i]);
    }
}