七种qsort排序方法

<本文中排序都是采用的从小到大排序>

一、对int类型数组排序

int num[100]; Sample: 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]; Sample: 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 In
{
double data;
int other;
}s[100] //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写 int cmp( const void *a ,const void *b)
{
return (*(In *)a)->data > (*(In *)b)->data ? 1 : -1;
} qsort(s,100,sizeof(s[0]),cmp); 

五、对结构体二级排序

struct In
{
int x;
int y;
}s[100]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (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); 

六、对字符串进行排序

struct In
{
int data;
char str[100];
}s[100]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a)->str , (*(In *)b)->str );
} qsort(s,100,sizeof(s[0]),cmp); 

七、计算几何中求凸包的cmp

int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
struct point *c=(point *)a;
struct point *d=(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;
} 

PS:

其中的qsort函数包含在<stdlib.h>的头文件里,strcmp包含在<string.h>的头文件里

转载于:https://www.cnblogs.com/wangfengju/p/6172471.html

qsort函数应用大全相关推荐

  1. 在c++中qsort()排序函数的使用qsort函数应用大全

    七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , co ...

  2. C语言qsort函数使用方法大全

    文章目录 一.qsort函数简介 二.qsort函数常用实例 1.比较整型数组 2.比较char数组 3.比较double数组 4.比较字符串 4.1按首字母排序 4.2按长度排序 4,3按字典顺序 ...

  3. c语言标准库低通的qsort函数不适宜所有排序任务的原因

    c语言标准库低通的qsort函数不适宜所有排序任务的原因: 第一:它只能用于内存中的数组排序,不能对链表中的数据排序: 第二:因为它是参数化的函数,所以能对各种数据进行操作,也造成它的运行速度比针对单 ...

  4. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  5. q函数表格怎么看_会计表格函数玩不会?超实用会计表格函数公式大全,财务人都在用...

    Excel函数公式可以说是用的比较方便的,很多会计人员都喜欢用函数公式来进行处理日常财务表格.但是很多新手会计人员都会时不时地吐槽:会计表格所涉及到的Excel函数公式记不住不会用呀,还经常会加班到很 ...

  6. 【编码】对qsort函数的稳定排序优化-京东实习笔试编程题(一)-2016.04.08

    今晚在做京东的笔试题时,使用了qsort函数,由于排序结果不稳定,导致一直无法ac.后来在待排序的结构体中多加入一个关键字段,较简单的解决了问题. 题目: 生日礼物 Time Limit: 2000/ ...

  7. C语言程序设计之标准库快速排序qsort函数用法示例

    C语言程序设计之标准库快速排序qsort函数,排序效率高,使用方便,太棒了. qsort函数定义如下: #include <stdlib.h>void qsort(void *base, ...

  8. lisp函数大全 微盘_LISP函数(分类)大全

    LISP函数(分类)大全 AutoLisp函数 一.数学运算功能函数 1.l(十 数值 数值-)返回:累计实数或整数数值 1.2(一 数值 数值-)返回:差值 1.3(* 数值 数值-)返回:所有数值 ...

  9. 总结一下qsort()函数的使用与注意

      一.简介   原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); ...

最新文章

  1. vue/cli 3.0 与 2.0脚手架怎样mock数据
  2. CNN应用之基于Overfeat的物体检测-2014 ICLR-未完待续
  3. 接收请求处理流程_从Tomcat入口了解Spring MVC的请求处理流程(2)问题答疑
  4. python自定义函数详解_python基础教程之自定义函数介绍
  5. 整数判重、大整数Hash
  6. 如何使用DNS反向映射来扫描IPv6地址?
  7. 软件设计师-不确定有限自动机到确定有限自动机转换的例子
  8. 周鸿祎:不得不说的话
  9. 人人都可以写的可视化Python小程序第二篇:旋转的烟花
  10. 学习hadoop需要具备基础知识
  11. 弄懂bind,apply和call的区别
  12. 《深度学习》————NN网络是否可以拟合任何一种函数
  13. jflash烧录教程_Jflash烧录(windows)原理分析
  14. HTML5 SVG生成图案背景样式的js插件
  15. tpshop安装及问题记录
  16. 什么是开发平台? 几句话就让你明白!
  17. 书籍《阅读的方法》读后感
  18. c语言大学教程答案pdf,C++大学教程(第九版) 保罗·戴特尔(Paul Deitel)等著 完整中文pdf扫描版[197MB]...
  19. matlab制作数字华容道,从技术角度实现实现数字华容道
  20. Debian安装谷歌浏览器(Google Chrome)

热门文章

  1. 字节跳动又一款中重度游戏曝光,它要进军“漫改MMO”领域!
  2. JavaWeb课程复习资料——用于突击考试总结
  3. ASP.NET MVC (一、控制器与视图)
  4. RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错
  5. OCM备考 三. Managing Database Availability 之RMAN日常操作
  6. PHP与SQL注入攻击
  7. redis的安装和测试
  8. CentOS7——卡在在启动界面
  9. JSON数据表示格式简介(JavaScript对象表示法)
  10. Linux下oracle数据库启动和关闭操作