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