用通用指针参数实现类属非序函数 ■函数定义: void sort(void*base,/需排序的数据(数组)首地址 unsigned int count,/数据元素的个数 unsigned int element_size,/一个数据元素所需的空间大小 int(*cmp)(const void*,const void*))/比较两个元素的函数 /不论采用何种排序算法,一般都需要对数组进行以下操作: /取第i个元素 (char *)base+i*element_size /比较第i个和第j个元素的大小(利用调用者提供的回调函数cmp实现 (*cmp)((char *)base+i*element_size, (char *)base+j*element_size) /交换第i个和第j个元素 char *p1=(char *)base+i*element_size, *p2=(char *)base+j*element_size; for (int k=0;k<element_size;k++) char temp=p1[k];p1[k]p2[k];p2[k]temp; }/上面的char用byte替代更好!typedef unsigned char byte;用通用指针参数实现类属排序函数 ◼ 函数定义: void sort(void *base, //需排序的数据(数组)首地址 unsigned int count, //数据元素的个数 unsigned int element_size, //一个数据元素所需的空间大小 int (*cmp)(const void *, const void *) ) //比较两个元素的函数 { //不论采用何种排序算法,一般都需要对数组进行以下操作: //取第i个元素 (char *)base+i*element_size //比较第i个和第j个元素的大小 (利用调用者提供的回调函数cmp实现) (*cmp)((char *)base+i*element_size, (char *)base+j*element_size) //交换第i个和第j个元素 char *p1=(char *)base+i*element_size, *p2=(char *)base+j*element_size; for (int k=0; k<element_size; k++) {char temp=p1[k]; p1[k] = p2[k]; p2[k] = temp; } } //上面的char用byte替代更好!typedef unsigned char byte;