Método de Ordenamiento Por Selección

#include <stdio.h>
#include <stdlib.h>


void ordenarSeleccionEnt(int * vec, size_t ce);
int * buscarMenorEnt(const int * vec, const int * fin);
void intercambiarEnt(int * e1, int * e2);

int main()
{
    int vec[]={14,12,5,4,1,3,6,8,15,2,7,9,13,10,11};
    int ce= sizeof(vec)/sizeof(int);
    int i;
    ordenarSeleccionEnt(vec, ce);


    for (i=0; i<ce; i++)
    {
        printf(" %d |", vec[i]);
    }

    printf("\n");


    return 0;
}

void ordenarSeleccionEnt(int * vec, size_t ce)
{
    int * fin = vec + ce - 1,
        * men;

    while(vec < fin)
    {
        men = buscarMenorEnt(vec, fin);
        if (vec!=men)
        {
            intercambiarEnt(vec, men);
        }
        vec++;
    }
}

int * buscarMenorEnt(const int * vec, const int * fin)
{
    const int * men = vec;
    vec++;
    while(vec <= fin)
    {
        if (*vec<*men)
        {
            men = vec;
        }
        vec++;
    }
    return (int *) men;
}

void intercambiarEnt(int * e1, int * e2)
{
    int aux = *e1;
    *e1 = *e2;
    *e2 = aux;
}