I believe you want to sort by value, not by address, so it should be:
void sort_ver2(int *pointer, int size)
{
int *i, *j, swap;
int *end = NULL;
if(size < 2 || pointer == NULL)
return;
end = pointer + size - 1;
for(i = pointer; i < end; i++)
{
for(j = i + 1; j <= end; j++)
{
if(*j < *i)
{
swap = *i;
*i = *j;
*j = swap;
}
}
}
}
Even if you would like to sort by address, your if statement is incorrect, as j is always greater than i in your code.
EDIT: added end variable to address issue with incorrect range of the inner for loop. Credits to @WhozCraig.