qsort 函数应用大全 qsort 函数是 C 语言标准库中的一个函数,用于对数组进行排序。它是根据元素的值或结构体成员的值进行排序的。本文将对 qsort 函数的七种应用进行详细讲解。 一、对 int 类型数组排序 qsort 函数可以对 int 类型数组进行排序。例如,下面是一个对 int 类型数组的排序示例: ```c int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num, 100, sizeof(num[0]), cmp); ``` 在上面的示例中,我们首先定义了一个 int 类型的数组 `num`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的大小。我们使用 `qsort` 函数对数组进行排序。 二、对 char 类型数组排序 qsort 函数也可以对 char 类型数组进行排序。例如,下面是一个对 char 类型数组的排序示例: ```c char word[100]; int cmp( const void *a , const void *b ) { return *(char *)a - *(char *)b; } qsort(word, 100, sizeof(word[0]), cmp); ``` 在上面的示例中,我们首先定义了一个 char 类型的数组 `word`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的大小。我们使用 `qsort` 函数对数组进行排序。 三、对 double 类型数组排序 qsort 函数也可以对 double 类型数组进行排序。但是,需要注意的是,在比较函数中,我们需要使用浮点数的比较方式。例如,下面是一个对 double 类型数组的排序示例: ```c double in[100]; int cmp( const void *a , const void *b ) { return *(double *)a > *(double *)b ? 1 : -1; } qsort(in, 100, sizeof(in[0]), cmp); ``` 在上面的示例中,我们首先定义了一个 double 类型的数组 `in`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的大小。我们使用 `qsort` 函数对数组进行排序。 四、对结构体一级排序 qsort 函数也可以对结构体数组进行排序。例如,下面是一个对结构体数组的排序示例: ```c struct In { double data; int other; }s[100]; int cmp( const void *a ,const void *b) { return (*(struct In *)a)->data > (*(struct In *)b)->data ? 1 : -1; } qsort(s, 100, sizeof(s[0]), cmp); ``` 在上面的示例中,我们首先定义了一个结构体数组 `s`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的成员变量 `data` 的大小。我们使用 `qsort` 函数对数组进行排序。 五、对结构体二级排序 qsort 函数也可以对结构体数组进行二级排序。例如,下面是一个对结构体数组的二级排序示例: ```c struct In { int x; int y; }s[100]; int cmp( const void *a , const void *b ) { struct In *c = (struct In *)a; struct In *d = (struct In *)b; if(c->x != d->x) { return c->x - d->x; } else { return d->y - c->y; } } qsort(s, 100, sizeof(s[0]), cmp); ``` 在上面的示例中,我们首先定义了一个结构体数组 `s`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的成员变量 `x` 和 `y` 的大小。我们使用 `qsort` 函数对数组进行排序。 六、对字符串进行排序 qsort 函数也可以对字符串数组进行排序。例如,下面是一个对字符串数组的排序示例: ```c struct In { int data; char str[100]; }s[100]; int cmp ( const void *a , const void *b ) { return strcmp( (*(struct In *)a)->str , (*(struct In *)b)->str ); } qsort(s, 100, sizeof(s[0]), cmp); ``` 在上面的示例中,我们首先定义了一个结构体数组 `s`,然后定义了一个比较函数 `cmp`,该函数用于比较两个元素的成员变量 `str` 的大小。我们使用 `qsort` 函数对数组进行排序。 七、计算几何中求凸包的 cmp qsort 函数也可以用于计算几何中求凸包的排序。例如,下面是一个对点的排序示例: ```c int cmp(const void *a,const void *b) { struct point *c=(struct point *)a; struct point *d=(struct point *)b; if( calc(*c,*d,p[1]) < 0) { return 1; } else { if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) { return 1; } else { return -1; } } } ``` 在上面的示例中,我们首先定义了一个比较函数 `cmp`,该函数用于比较两个点的旋转角度。我们使用 `qsort` 函数对点数组进行排序。 qsort 函数可以应用于各种数据类型的排序,包括 int、char、double 等基本类型,以及结构体和字符串等复杂类型。它的应用非常广泛,能满足各种排序需求。
- 粉丝: 9
- 资源: 82
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助