七种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;
}
转载于:https://www.cnblogs.com/rosion/archive/2008/10/30/1323303.html
七种qsort排序方法相关推荐
- 懒人的七种超级减肥方法 - 生活至上,美容至尚!
懒人的七种超级减肥方法:冬天坐在办公室,动也不想动,放假就窝家里沙发吃薯片看韩剧,天呀!这种生活绝对是变成胖妞.开春还要见人吗?现在减肥网告诉各位朋友最有效的懒人的七种超级减肥方法,行不行动就看你啦! ...
- 懒人的七种超级减肥方法 - 健康程序员,至尚生活!
懒人的七种超级减肥方法:冬天坐在办公室,动也不想动,放假就窝家里沙发吃薯片看韩剧,天呀!这种生活绝对是变成胖妞.开春还要见人吗?现在减肥网告诉各位朋友最有效的懒人的七种超级减肥方法,行不行动就看你啦! ...
- AI 渗透应用程序开发的七种趋势及方法
2019-11-25 17:12:31 如果你最近一直在关注科技新闻,那么可能已经读到了有关人工智能的新闻,无论好坏.它在你能想到的每个行业都留下了自己的印记.诸如Google,Facebook和Mi ...
- python实现列表去重_python实现七种列表去重方法
#encoding=utf-8import timetime_start=time.time()print u"列表去重的七种方法"print u"第一种测试方法&quo ...
- Java实现几种常见排序方法
为什么80%的码农都做不了架构师?>>> 日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序 ...
- 按照姓名升序排序的代码_干货:6种EXCEL排序方法,让老板对你刮目相看
排序是EXCEL中十分常用的功能,可你知道除了按列升序.降序排列,EXCEL还能按行排序.甚至自定义排序么?今天就为大家介绍EXCEL中6种排序方法. 升降排序 如果需要对学生的总成绩从低到高排序,首 ...
- java 鸡尾酒排序_Java实现几种常见排序方法
日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...
- JAVA数组中五种常见排序方法
前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...
- c语言的5种常用排序方法
c语言的5种常用排序算法 1.冒泡排序(最常用) 冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较.每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来.( ...
- JS七种加密解密方法
HTML或JS加密解密 本文一共介绍了七种方法: 一:最简单的加密解密 二:转义字符"\"的妙用 三:使用Microsoft出品的脚本编码器Script Encoder ...
最新文章
- 字符串还可以这样初始化--uboot篇
- 1月书讯 | 开年多本重点书
- Python快速教程博客园地址
- 石川es6课程---17、ES7 预览
- 【面试题】Redis中是如何实现分布式锁的
- elasticsearch 根据条件更新数据
- 阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化
- Android 4.4及以上系统下应用的状态栏颜色渐变效果的实现
- 计算机应用昨早领域,计算机应用-第1章.ppt
- Java笔记-获取当前时间及对当前时间进行加减及时间对比
- 之前安装vmware player卸载失败出现msi '' failed,就安装不vmware station
- 优酷APP响应式布局在消费场景的落地之Android篇
- c语言火车票管理系统360问答,C语言 车票管理系统 前面一点点的程序,不知道报错是什么意思,可以解释一下吗?代码的具体问题是什么...
- Linux for Matlab中文注释乱码(亲测有效)
- mysql的常用引擎
- 精心整理|Python爱好者社区历史文章合集(作者篇)--20190925从豆瓣获取
- Android 最最最简单的浏览器代码
- IOS 使用自签名证书开发HTTPS文件传输
- 上周内外盘行情回顾及交易情况2022.4.4
- android 左测设置功能,iqoo手机左边按键有什么作用?iqoo手机左侧按键介绍