其实这个qsort函数运用的原理就是依赖最后一个形参传入编程人员自己构造的函数功能的函数指针,最后进行比较也会按照编程人员设计的函数来进行比较。
要想用到qsort函数,就需要包含stdlib.h中,
qsort函数的原型如下:
void qsort(void *, size_t nlem , size_t width , int (*fcmp) ( const void * , const void *))
//其中第一个参数为待排序数组的指针
第二个参数为数组中元素个数
第三个参数是元素类型的长度
第四个参数是函数指针。
源代码示例:
#include<iostream>
#include<stdlib.h>
using namespace std;
double sigma(double (*func)(double),double d1,double d2)
{
double dt = 0.0;
for(double d = d1;d < d2;d += 0.1)
{
dt += func(d);
}
return dt;
}
int compare(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
int main()
{
char list[5][4] = {"cat","car","cab","cap","can"};
qsort((void *)list,5,sizeof(list[0]),compare);
for(int i = 0;i<5;i++)
{
cout<<list[i]<<"\t";
}
cout<<endl;
return 0;
}
以上是用qsort解决的排序问题。