qsort七种排序方法
<本文中排序都是采用的从小到大排序>
qsort 包含在头文件 #include<stdlib.h>
qsort ( 哪个 , 长度 , 大小, cmp)
一、对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 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;
- }
例:
- #include<stdio.h>
- #include<stdlib.h>
- #define M 100
- typedef struct data
- {
- int num;
- char ch;
- }DATA;
- int cmp(const void*a,const void*b)
- {
- if((*(DATA*)a).num!=(*(DATA*)b).num)
- return (*(DATA*)a).num-(*(DATA*)b).num;
- return (*(DATA*)a).ch-(*(DATA*)b).ch;
- }
- int main()
- {
- int n,i,cas;
- DATA s[M];
- while(~scanf("%d",&n))
- {
- for(i=0;i<n;i++)
- scanf("%d %ch",&s[i].num,&s[i].ch);
- qsort(s,n,sizeof(DATA),cmp);
- for(i=0;i<n;i++)
- printf("num=%d ch=%c\n",s[i].num,s[i].ch);
- }
- return 0;
- }
qsort七种排序方法相关推荐
- C库函数qsort七种使用方法示例
这篇文章是 一楼那个学长写的 C库函数qsort七种使用方法示例 七种qsort排序方法<本文中排序都是采用的从小到大排序> 一.对int类型数组排序 C++代码 int num[10 ...
- 七种排序算法(C++)
排序算法 引言 冒泡排序 简单选择排序 直接插入排序 希尔排序 堆排序 归并排序 快速排序 引言 排序中主要包含数据元素的比较和交换,本文以C++实现以下七种排序算法,以从小到大排序为例. 如有错误, ...
- java 算法 排序算法_Java七种排序算法以及实现
Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...
- 常用七种排序之冒泡排序(排序图解+分析Java
hello呀!各位,这里是Sunlightʊə. 目前大三,主要在学习Java语言.可以一起交流呀! 相关文章: 常用七种排序之选择排序(排序图解+分析Java 常用七种排序之希尔排序(排序图解+分析 ...
- 郑州尚学堂:JAVA常用4种排序方法
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 当然 程序中最简单的使用就是:快速排序和冒泡排序,插入排序的使用更具有技巧性,选择排序则过于复杂,冗杂 ...
- java中的五种排序方法_用Java排序的五种有用方法
java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...
- c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc
基于C语言的几种排序方法比较.doc 基于C语言的几种排序方法比较 [摘要]文章对c语言中的冒泡排序法.选择排序法.插入排序法进行比较讨论,以试图找出最佳排序方法. [关键词]c语言;排序方法;比较 ...
- 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法
好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...
- 两种排序方法(直接判断)
题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的.考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "car ...
最新文章
- Nature综述:如何获得理想的微生物组
- numpy.lib.stride_tricks.as_strided() 高效切分数组
- 服务器和客户端之间的变量交互
- MSSQL字符串处理-清除指定不连续或连续的字符
- Linux 配置jdk
- 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
- REST framework(2)
- mysql中使用case when语句
- 安装Ubuntu镜像和VMware在安装Ubuntu镜像之后开机蓝屏的解决方案
- React后台管理系统-订单管理
- openCV 图像阀值
- P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)
- 前度字符串转数组_关于前度书籍的阿里云论坛用户知识和技术交流
- 删除外键的sql语句
- 群晖(docker图形化界面)使用 SpeedTest 测速
- 【常用算法】螺旋矩阵
- 微信小程序入门必看①
- 这2万字的前端基础知识查漏补缺,请你收藏好
- 苹果备忘录忘记密码,里面有重要信息,想办法找回
- 练习MySQL,sql练习(mysql版)
热门文章
- STC单片机功率控制下载板
- 315MHz 高频射频发射模块
- nginx防mysql注入_nginx防止sql注入
- 鸿蒙系统怎么支持安卓应用,鸿蒙系统支持安卓软件吗-鸿蒙系统支持安卓应用吗...
- Markdown 基础语法 记录 复制到 typora 中就可以看出来了呦,或者预览哟
- php中location.reload,js刷新页面location.reload()用法详解
- php 将图片截取成3张,【php】php gd库怎么把一个图片裁剪成圆形的
- 2019华为性格测试题_小红书达人力荐!华为 Mate20 Pro红蓝新色最懂女人心
- 调整分区个数_2T移动硬盘分区办法
- Sublime text3!行首,行尾,批量编辑!