oooh jeee *bedächtigkopfschüttel*

erst mal gibt sizeof(feldvariable) nicht die anzahl der feldelemente sondern die größe des zeigers der auf das feld zeigt (vermutlich also etwa 4)
vergiss dass es diesen befehl gibt, bis du etwas von C verstehst

dann kannst du kein feld mit variabler größe anlegen. der compiler muss die feldgröße kennen, bevor das programm startet. etwas wie
int small[p];
geht daher nicht
bei c++ gehts wenn p als const deklariert ist (const int p=99), in C muss die feldgröße ein literal (z.b. 99) oder eine symbolische konstante (#define feldgröße 99) sein.
in jedem fall muss die feldgröße also de fakto konstant sein.

am besten legst du mal ne konstante wie
const int feldmax=99;
an (wobei 99 größer sein soll als alle benötigten felder)
und legst alle felder so an:
int feld(feldmax);

mach die felder immer etwas größer als benötigt.
z.b. du willst 13 werte speichern.
dann mach
int feld[15];
feld[0]=-999;
feld[14]=-999;
verwende die indizes von 1 bis 13 also feld[1] bis feld[13] um die werte zu speichern.
verwende zum sortieren nur positive zahlen.
prüfe am ende des programms, ob in feld[0] und feld[14] immer noch -999 steht.
falls nicht, stimmt etwas nicht im programm.
(das sind natürlich nur tips für anfänger)

bring das erst mal alles in ordnung, dann sehen wir weiter