Cminimum/maximum函数

C minimum/maximum function

C99 中是否有 标准函数 以使用给定的比较函数获取给定数组中的 minimum/maximum 元素。 类似于:

void* get_min(void* start,size_t size,size_t elementSize,int (*compare)(const void *, const void*))


好像没有这样的标准函数,所以我的解决方法是:

最低要求:

 void* get_min(void* start,size_t size,size_t elementSize,int (*compare)(const void *, const void*))
    {
        char* minObject = start;
        for(int i = elementSize;i<size*elementSize;i+=elementSize){
            char* object = start+i;
            if(compare(object,minObject)<0){
                minObject = object;
            }
        }
        return minObject;
    }


最大:

void* get_max(void* start,size_t size,size_t elementSize,int (*compare)(const void *, const void*))
{
    char* maxObject = start;
    for(int i = elementSize;i<elementSize*size;i+=elementSize){
        char* object = start+i;
        if(compare(object,maxObject)>0){
            maxObject = object;
        }
    }
    return maxObject;
}