C语言标准库函数 qsort 详解
来源:互联网 发布:赚微信红包软件 编辑:程序博客网 时间:2024/06/01 11:27
qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。
函数原型:
void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
用法以及参数说明:
base (数组起始地址)
num (数组元素个数)
size (每一个元素的大小)
comparator (函数指针,指向比较函数)
Return Value (无返回值)
一、对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 - *(char *)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)
{
struct Sample *c = (struct Sample *)a;
struct Sample *d = (struct Sample *)b;
return c->data > d->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 = (struct Sample *)a;
struct Sample *d = (struct 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语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数qsort详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort函数详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort详解
- C语言标准库函数qsort详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数 qsort 详解
- C语言标准库函数qsort
- vs2015+openCV(x64)出现运行时”无法查找或打开 PDB 文件”问题
- 江苏科技大学“FlySpiders”本创小组组员学习记录——周云
- 线段树 求一个序列的非递增子序列的权值和的最大值
- 树的重量
- epoll的水平触发和边缘触发
- C语言标准库函数 qsort 详解
- ICPC2017网络赛(南宁)子序列最大权值(树状数组+dp)
- 排序算法
- 解决pycharm代码无提示问题
- Python二进制串转换为通用字符串
- Python中的is
- 文件打开模式 w+ r+ a+ 区别和辨析
- 欢迎使用CSDN-markdown编辑器
- Java第三周作业(2)