`

C语言标准库函数 qsort 详解

 
阅读更多

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

 

qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。

函数原型:

void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

用法以及参数说明:

Sorts the num elements of the array pointed by base, each element size bytes long, using the comparator function to determine the order.

The sorting algorithm used by this function compares pairs of values by calling the specified comparator function with two pointers to elements of the array.

The function does not return any value, but modifies the content of the array pointed by base reordering its elements to the newly sorted order.

base Pointer to the first element of the array to be sorted.(数组起始地址)
num Number of elements in the array pointed by base.(数组元素个数)
size Size in bytes of each element in the array.(每一个元素的大小)
comparator Function that compares two elements.(函数指针,指向比较函数)
1、The function must accept two parameters that are pointers to elements, type-casted as void*. These parameters should be cast back to some data type and be compared.
2、The return value of this function should represent whether elem1 is considered less than, equal to, or greater than elem2 by returning, respectively, a negative value, zero or a positive value.
Return Value none (无返回值)

一、对int类型数组排序

int num[100];

int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}

qsort(num,100,sizeof(num[0]),cmp);

二、对char类型数组排序(同int类型)

char word[100];

int cmp( const void *a , const void *b )
{
return *(char *)a - *(int *)b;
}

qsort(word,100,sizeof(word[0]),cmp);

三、对double类型数组排序

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

四、对结构体一级排序

struct Sample
{
double data;
int other;
}s[100]

//按照data的值从小到大将结构体排序

int cmp( const void *a ,const void *b)
{
return (*(Sample *)a).data > (*(Sample *)b).data ? 1 : -1;
}

qsort(s,100,sizeof(s[0]),cmp);

五、对结构体二级排序

struct Sample
{
int x;
int y;
}s[100];

//按照x从小到大排序,当x相等时按照y从大到小排序

int cmp( const void *a , const void *b )
{
struct Sample *c = (Sample *)a;
struct Sample *d = (Sample *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}

qsort(s,100,sizeof(s[0]),cmp);

六、对字符串进行排序

struct Sample
{
int data;
char str[100];
}s[100];

//按照结构体中字符串str的字典顺序排序

int cmp ( const void *a , const void *b )
{
return strcmp( (*(Sample *)a).str , (*(Sample *)b).str );
}

qsort(s,100,sizeof(s[0]),cmp);

附加一个完整点的代码,对字符串二维数组排序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char s[2001][1001];

int cmp(const void *a, const void *b){
return strcmp((char *)a,(char *)b);
}

int main(){
int i,n;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++) gets(s[i]);
qsort(s,n,1001*sizeof(char),cmp);
for(i=0;i<n;i++) puts(s[i]);
return 0;
}

分享到:
评论

相关推荐

    C语言库函数 中文详解.rar

    C语言库函数是C编程中的核心组成部分,它们提供了一系列预定义的函数,使得开发者能够方便地执行各种操作,如输入输出、字符串处理、数学运算、内存管理等。本资源"CLIB.exe"可能是用于帮助理解和学习C语言库函数的...

    C语言函数库详解(收藏版)

    C语言函数库是C标准库的重要组成部分,它是为C语言程序员提供的各种标准函数的集合,这些函数可以用来执行各种常见的任务,如输入/输出、内存操作、数学计算、系统调用等。下面将详细介绍各函数库的内容及其用途。 ...

    qsort C语言版

    `qsort` 是一个在 C 语言标准库 `&lt;stdlib.h&gt;` 中定义的函数,用于对数组进行快速排序。它是一个非常强大的工具,可以用来对多种数据类型进行排序,包括基本数据类型如 `int`, `char`, `double` 以及复杂数据类型如...

    七种qsort排序

    描述:本文详细介绍了七种使用C语言标准库函数`qsort()`进行排序的方法,适用于不同数据类型和复杂结构的排序需求。每种方法都提供了具体的示例代码,旨在帮助读者深入理解`qsort()`函数的使用技巧。 ### 知识点...

    qsort的详细用法

    `qsort`是C语言中的标准库函数,用于对数组中的元素进行排序,它位于`&lt;stdlib.h&gt;`头文件中。此函数适用于各种数据类型,不仅限于基本类型如`int`或`double`,还支持自定义结构体的排序,极大地增强了其通用性和实用...

    C标准函数参考资料详解

    "C标准函数参考资料详解"是一个针对C语言标准库函数的详细指南,旨在帮助开发者快速查找并理解各种函数的用法。下面将对C标准函数进行深入的解析。 C标准库,也称为C运行时库,是C语言编程的核心部分,包含了大量...

    C语言写得学生管理系统

    C语言提供了标准库函数`fopen()`、`fwrite()`、`fread()`等用于文件操作。在学生信息管理系统中,我们可以先将链表中的所有学生信息序列化为二进制数据,然后写入文件;反之,从文件读取数据时,再反序列化回链表。 ...

    C语言参考手册

    手册覆盖了C语言的基本概念、数据类型、控制结构、标准库函数等内容,旨在帮助学生掌握C语言的核心技能。 ### 核心知识点详解 #### 1. ASCII编码 - **知识点**: C语言中使用的字符集及其编码方式。 - **应用场景**...

    二级C 复习资料 详解

    熟悉C标准库中的常用函数,如字符串处理函数(strcpy、strcat、strcmp等)、数学函数(如sqrt、pow等)、排序和查找算法(如qsort、bsearch等),可以极大地提高编程效率。 通过深入学习和实践上述知识点,并结合...

    标准库 stdlib.pdf

    ### 标准库 stdlib.pdf 知识点详解 #### 概述 `stdlib c/c++标准库函数介绍`这份文档介绍了C/C++语言中的标准库函数,这些函数是编程时常用的工具,可以帮助开发者实现从数学计算到文件操作等各种功能。文档通过...

    huawei.zip_C 笔试 答案_华为笔试

    12. **标准库函数**:掌握常用的C标准库函数,如数学函数(如sin、cos、exp等)、输入输出函数(如printf、scanf)、排序和查找算法(如qsort、bsearch)等。 在复习这些知识点时,不仅要理解概念,还要通过实践...

    C语言中使用快速排序算法对元素排序的实例详解

    在C语言中,我们可以使用标准库函数`qsort()`来实现快速排序。`qsort()`函数原型如下: ```c void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); ``` 参数含义: - ...

    二级c试题(。。。)

    20. **标准库函数**:如排序(qsort)、搜索(bsearch)、数学函数(sqrt、pow、sin等)的使用。 在准备二级C试题时,考生需要对这些知识点有深入理解和熟练应用,同时,实践编程和解决实际问题的能力也是考察的...

    全部stdlib.h1

    《C语言标准库详解》 在C编程中,`&lt;stdlib.h&gt;`是一个极为重要的头文件,它提供了大量的基本操作,如内存管理、数值转换、进程控制以及算法实现等功能。本文将深入解析`&lt;stdlib.h&gt;`中的关键概念和函数。 一、库变量...

    C头文件及其下定义的函数

    ### C头文件及其下定义的函数详解 在C语言编程中,头文件(header files)起着至关重要的作用,它们包含了各种预定义的函数、宏和数据类型定义,极大地简化了程序员的工作,使得复杂的操作变得简单易行。下面将详细...

    上海交通大学ACM算法模板gai.docx

    `qsort()` 是C语言中的一个库函数,用于对数组进行排序,它接受一个比较函数`compare()`,根据该函数来决定元素的相对顺序。 ### 二、重要公式与定理 这里涉及多个数论、组合数学的公式和定理,如斐波那契数列、...

    GLIBC Tutorial(GLIBC 教程)

    GLIBC不仅包含了标准C库函数,还提供了POSIX线程支持、网络功能以及其他系统调用接口。作为GNU/Linux系统中最基础的软件组件之一,GLIBC的重要性不言而喻。 #### 二、错误报告 - **概念与机制**:GLIBC通过多种...

Global site tag (gtag.js) - Google Analytics