总结一下qsort()函数的使用与注意
参 数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序
如int cmp(const void *a, const void *b)中有两个元素作为参数,返回一个int值,如果比较函数返回大于0,qsort就认为a > b,返回小于0qsort就认为a < b。qsort知道元素的大小了,就可以把大的放前面去。如果你的比较函数返回本来应该是1的(即a > b),而却返回-1(小于0的数),那么qsort认为a < b,就把b放在前面去,但实际上是a > b的,所以就造成了降序排序的差别了。
简单来说,比较函数的作用就是给qsort指明元素的大小事怎么比较的。
#include <stdio.h>
#include <stdlib.h>typedef char Element_type;Element_type list[] = "djfkwjefklwefagj"; int Comp(const void *p1,const void *p2)
{//降序排序return strcmp((char *)p2,(char *)p1);//升序排序//return strcmp((char *)p1,(char *)p2);
}int main(void)
{puts("排序前:");puts(list);printf("\n");//考虑还有字符串结束符,这里元素个数别忘减1qsort(list, sizeof(list) / sizeof(Element_type) - 1, sizeof(Element_type), Comp);system("pause");puts("排序后:");puts(list);printf("\n");return 0;
}
3、按结构体中某个关键字排序(对结构体一级排序):
#include <stdio.h>
#include <stdlib.h>struct Node
{double data;int other;
}s[100];int Comp(const void *p1,const void *p2)
{return (*(Node *)p2)->data - (*(Node *)p1)->data;
}int main(void)
{puts("排序前:");//codeprintf("\n");qsort(s, 100, sizeof(s[0]), Comp);system("pause");puts("排序后:");//codeprintf("\n");return 0;
}
struct Node
{int x;int y;
}s[100];//按照x从小到大排序,当x相等时按y从大到小排序
int Comp(const void *p1,const void *p2)
{struct Node *c = (Node *)p1;struct Node *d = (Node *)p2;if(c->x != d->x) return c->x - d->x;else return d->y - c->y;
}
struct Node
{int data;char str[100];
}s[100];//按照结构体中字符串 str 的字典序排序
int Comp(const void *p1,const void *p2)
{return strcmp((*(Node *)p1)->str,(*(Node *)p2)->str);
}
转载于:https://www.cnblogs.com/pang123hui/archive/2011/01/28/1947003.html
总结一下qsort()函数的使用与注意相关推荐
- c语言标准库低通的qsort函数不适宜所有排序任务的原因
c语言标准库低通的qsort函数不适宜所有排序任务的原因: 第一:它只能用于内存中的数组排序,不能对链表中的数据排序: 第二:因为它是参数化的函数,所以能对各种数据进行操作,也造成它的运行速度比针对单 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- 【编码】对qsort函数的稳定排序优化-京东实习笔试编程题(一)-2016.04.08
今晚在做京东的笔试题时,使用了qsort函数,由于排序结果不稳定,导致一直无法ac.后来在待排序的结构体中多加入一个关键字段,较简单的解决了问题. 题目: 生日礼物 Time Limit: 2000/ ...
- C语言程序设计之标准库快速排序qsort函数用法示例
C语言程序设计之标准库快速排序qsort函数,排序效率高,使用方便,太棒了. qsort函数定义如下: #include <stdlib.h>void qsort(void *base, ...
- qsort函数应用大全
七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , co ...
- qsort()函数详解
一.写在开头 1.1 本节内容 学习C语言中的qsort()函数. 二.qsort() 2.1 函数原型 void qsort(void *base,size_t nmemb,size_t size, ...
- 在c++中qsort()排序函数的使用qsort函数应用大全
七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , co ...
- qsort函数使用手册
原网址:http://www.maycode.com/index.php/linux/54-linuxdevelop/1386-cpp.html qsort包含在<stdlib.h>头文件 ...
- 【C语言】qsort函数用法(转)
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(cons ...
最新文章
- IPV6的设置问题!
- 图像非极大值抑制 Sobel 边缘实现
- 爬虫之 xpath的节点关系
- C# 获取当前屏幕DPI
- Android 启动过程详解
- 红黄蓝收购新加坡某民营儿童教育集团,宣布更名为GEH Education...
- Centos的yum源更换为国内的阿里云源
- groovy lambda_Java Lambda流和Groovy Clouse的比较
- 前端学习(1924)vue之电商管理系统电商系统之权限的渲染方式
- 三月磨一剑---也来晒晒我们的开发产品 欢迎拍砖
- 对用户密码进行加盐处理
- 吉利汽车借助阿里云进行汽车行业新零售模式探索
- html用记事本打字显示问号,电脑记事本问号怎么办
- 从零开始的泡泡龙游戏
- 不同手指戴戒指时的清热解毒的清是什么意思?_百度知道
- AUTOCAD——打断命令、合并命令
- Connor学Android - JNI和NDK编程
- day1	 计算机基础以及python基础
- cesium接入高德、osm、谷歌、arcgis、mapbox地图(cesium篇.3)
- 两张图搞定IJK源码
热门文章
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林
- MATLAB入门级知识
- 线段树的数组大小下限及证明
- java 数据库数据写接口_Java读取接口数据并保存到数据库
- python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解
- 【模板】AC自动机(简单版)
- centos系统下安装python3以及pip3
- 【BZOJ1934】善意的投票(网络流)
- Xcode9学习笔记69 - 创建各种类型的文件(文本、数组、字典、图片)
- (二期)IOS调试技巧