C99中是否存在标准函数,以使用给定的比较函数在给定数组中获取最小/最大元素。 与此类似:
void* get_min(void* start,size_t size,size_t elementSize,int (*compare)(const void *, const void*))
答案 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;
}