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

qsort  包含在头文件 #include<stdlib.h>

qsort ( 哪个 , 长度 , 大小, cmp)

一、对int类型数组排序

[cpp] view plaincopyprint?
  1. int num[100];
  2. int cmp ( const void *a , const void *b )
  3. {
  4. return *(int *)a - *(int *)b;
  5. }
  6. qsort(num,100,sizeof(num[0]),cmp);

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

[cpp] view plaincopyprint?
  1. char word[100];
  2. int cmp( const void *a , const void *b )
  3. {
  4. return *(char *)a - *(int *)b;
  5. }
  6. qsort(word,100,sizeof(word[0]),cmp);

三、对double类型数组排序(特别要注意)

[cpp] view plaincopyprint?
  1. double in[100];
  2. int cmp( const void *a , const void *b )
  3. {
  4. return *(double *)a > *(double *)b ? 1 : -1;
  5. }
  6. qsort(in,100,sizeof(in[0]),cmp);

四、对结构体一级排序

[cpp] view plaincopyprint?
  1. struct In
  2. {
  3. double data;
  4. int other;
  5. }s[100]
  6. //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
  7. int cmp( const void *a ,const void *b)
  8. {
  9. return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
  10. }
  11. qsort(s,100,sizeof(s[0]),cmp);

五、对结构体二级排序

[cpp] view plaincopyprint?
  1. struct In
  2. {
  3. int x;
  4. int y;
  5. }s[100];
  6. //按照x从小到大排序,当x相等时按照y从大到小排序
  7. int cmp( const void *a , const void *b )
  8. {
  9. struct In *c = (In *)a;
  10. struct In *d = (In *)b;
  11. if(c->x != d->x) return c->x - d->x;
  12. else return d->y - c->y;
  13. }
  14. qsort(s,100,sizeof(s[0]),cmp);

六、对字符串进行排序

[cpp] view plaincopyprint?
  1. struct In
  2. {
  3. int data;
  4. char str[100];
  5. }s[100];
  6. //按照结构体中字符串str的字典顺序排序
  7. int cmp ( const void *a , const void *b )
  8. {
  9. return strcmp( (*(In *)a)->str , (*(In *)b)->str );
  10. }
  11. qsort(s,100,sizeof(s[0]),cmp);

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

[cpp] view plaincopyprint?
  1. int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
  2. {
  3. struct point *c=(point *)a;
  4. struct point *d=(point *)b;
  5. if( calc(*c,*d,p[1]) < 0)
  6. return 1;
  7. else  //如果在一条直线上,则把远的放在前面
  8. 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))
  9. return 1;
  10. else return -1;
  11. }

例:

[cpp] view plaincopyprint?
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define M 100
  4. typedef struct data
  5. {
  6. int num;
  7. char ch;
  8. }DATA;
  9. int cmp(const void*a,const void*b)
  10. {
  11. if((*(DATA*)a).num!=(*(DATA*)b).num)
  12. return (*(DATA*)a).num-(*(DATA*)b).num;
  13. return (*(DATA*)a).ch-(*(DATA*)b).ch;
  14. }
  15. int main()
  16. {
  17. int n,i,cas;
  18. DATA s[M];
  19. while(~scanf("%d",&n))
  20. {
  21. for(i=0;i<n;i++)
  22. scanf("%d %ch",&s[i].num,&s[i].ch);
  23. qsort(s,n,sizeof(DATA),cmp);
  24. for(i=0;i<n;i++)
  25. printf("num=%d ch=%c\n",s[i].num,s[i].ch);
  26. }
  27. return 0;
  28. }

qsort七种排序方法相关推荐

  1. C库函数qsort七种使用方法示例

    这篇文章是  一楼那个学长写的  C库函数qsort七种使用方法示例 七种qsort排序方法<本文中排序都是采用的从小到大排序> 一.对int类型数组排序 C++代码 int num[10 ...

  2. 七种排序算法(C++)

    排序算法 引言 冒泡排序 简单选择排序 直接插入排序 希尔排序 堆排序 归并排序 快速排序 引言 排序中主要包含数据元素的比较和交换,本文以C++实现以下七种排序算法,以从小到大排序为例. 如有错误, ...

  3. java 算法 排序算法_Java七种排序算法以及实现

    Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...

  4. 常用七种排序之冒泡排序(排序图解+分析Java

    hello呀!各位,这里是Sunlightʊə. 目前大三,主要在学习Java语言.可以一起交流呀! 相关文章: 常用七种排序之选择排序(排序图解+分析Java 常用七种排序之希尔排序(排序图解+分析 ...

  5. 郑州尚学堂:JAVA常用4种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...

  6. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  7. c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc

    基于C语言的几种排序方法比较.doc 基于C语言的几种排序方法比较 [摘要]文章对c语言中的冒泡排序法.选择排序法.插入排序法进行比较讨论,以试图找出最佳排序方法. [关键词]c语言;排序方法;比较 ...

  8. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  9. 两种排序方法(直接判断)

    题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的.考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "car ...

最新文章

  1. Nature综述:如何获得理想的微生物组
  2. numpy.lib.stride_tricks.as_strided() 高效切分数组
  3. 服务器和客户端之间的变量交互
  4. MSSQL字符串处理-清除指定不连续或连续的字符
  5. Linux 配置jdk
  6. 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
  7. REST framework(2)
  8. mysql中使用case when语句
  9. 安装Ubuntu镜像和VMware在安装Ubuntu镜像之后开机蓝屏的解决方案
  10. React后台管理系统-订单管理
  11. openCV 图像阀值
  12. P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)
  13. 前度字符串转数组_关于前度书籍的阿里云论坛用户知识和技术交流
  14. 删除外键的sql语句
  15. 群晖(docker图形化界面)使用 SpeedTest 测速
  16. 【常用算法】螺旋矩阵
  17. 微信小程序入门必看①
  18. 这2万字的前端基础知识查漏补缺,请你收藏好
  19. 苹果备忘录忘记密码,里面有重要信息,想办法找回
  20. 练习MySQL,sql练习(mysql版)

热门文章

  1. STC单片机功率控制下载板
  2. 315MHz 高频射频发射模块
  3. nginx防mysql注入_nginx防止sql注入
  4. 鸿蒙系统怎么支持安卓应用,鸿蒙系统支持安卓软件吗-鸿蒙系统支持安卓应用吗...
  5. Markdown 基础语法 记录 复制到 typora 中就可以看出来了呦,或者预览哟
  6. php中location.reload,js刷新页面location.reload()用法详解
  7. php 将图片截取成3张,【php】php gd库怎么把一个图片裁剪成圆形的
  8. 2019华为性格测试题_小红书达人力荐!华为 Mate20 Pro红蓝新色最懂女人心
  9. 调整分区个数_2T移动硬盘分区办法
  10. Sublime text3!行首,行尾,批量编辑!