Według specyfikacji C++ nie powinieneś pisać
int liczba[N];
a
int *liczba = new int[N];
Ale twój błąd jest w pętli sortującej. Iterujesz do elementu N, ale odwołujesz się jeden element dalej:
for(int j=0;j<N;j++)
{
if(liczba[j]>liczba[j+1])
i zgarniasz jakiś przypadkowy blok pamięci do swojej tablicy. Zresztą widzę po Dlaczego tylko 3? Wiatraczki FANGEN że masz do tego szczęście
PS. Czemu nie pójdziesz o krok dalej i nie uzyjesz funkcji sort zamiast funkcji swap?