C最小/最大功能

时间:2018-03-27 20:09:03

标签: c c99

C99中是否存在标准函数,以使用给定的比较函数在给定数组中获取最小/最大元素。 与此类似:

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


1 个答案:

答案 0 :(得分:0)

所以似乎没有这样的标准功能,所以这是我的解决方案:

至少:

 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;
}