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

一、对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排序方法相关推荐

  1. 懒人的七种超级减肥方法 - 生活至上,美容至尚!

    懒人的七种超级减肥方法:冬天坐在办公室,动也不想动,放假就窝家里沙发吃薯片看韩剧,天呀!这种生活绝对是变成胖妞.开春还要见人吗?现在减肥网告诉各位朋友最有效的懒人的七种超级减肥方法,行不行动就看你啦! ...

  2. 懒人的七种超级减肥方法 - 健康程序员,至尚生活!

    懒人的七种超级减肥方法:冬天坐在办公室,动也不想动,放假就窝家里沙发吃薯片看韩剧,天呀!这种生活绝对是变成胖妞.开春还要见人吗?现在减肥网告诉各位朋友最有效的懒人的七种超级减肥方法,行不行动就看你啦! ...

  3. AI 渗透应用程序开发的七种趋势及方法

    2019-11-25 17:12:31 如果你最近一直在关注科技新闻,那么可能已经读到了有关人工智能的新闻,无论好坏.它在你能想到的每个行业都留下了自己的印记.诸如Google,Facebook和Mi ...

  4. python实现列表去重_python实现七种列表去重方法

    #encoding=utf-8import timetime_start=time.time()print u"列表去重的七种方法"print u"第一种测试方法&quo ...

  5. Java实现几种常见排序方法

    为什么80%的码农都做不了架构师?>>>    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序 ...

  6. 按照姓名升序排序的代码_干货:6种EXCEL排序方法,让老板对你刮目相看

    排序是EXCEL中十分常用的功能,可你知道除了按列升序.降序排列,EXCEL还能按行排序.甚至自定义排序么?今天就为大家介绍EXCEL中6种排序方法. 升降排序 如果需要对学生的总成绩从低到高排序,首 ...

  7. java 鸡尾酒排序_Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...

  8. JAVA数组中五种常见排序方法

    前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...

  9. c语言的5种常用排序方法

    c语言的5种常用排序算法 1.冒泡排序(最常用) 冒泡排序是最简单的排序方法:原理是:从左到右,相邻元素进行比较.每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来.( ...

  10. JS七种加密解密方法

    HTML或JS加密解密 本文一共介绍了七种方法:   一:最简单的加密解密   二:转义字符"\"的妙用   三:使用Microsoft出品的脚本编码器Script Encoder ...

最新文章

  1. 字符串还可以这样初始化--uboot篇
  2. 1月书讯 | 开年多本重点书
  3. Python快速教程博客园地址
  4. 石川es6课程---17、ES7 预览
  5. 【面试题】Redis中是如何实现分布式锁的
  6. elasticsearch 根据条件更新数据
  7. 阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化
  8. Android 4.4及以上系统下应用的状态栏颜色渐变效果的实现
  9. 计算机应用昨早领域,计算机应用-第1章.ppt
  10. Java笔记-获取当前时间及对当前时间进行加减及时间对比
  11. 之前安装vmware player卸载失败出现msi '' failed,就安装不vmware station
  12. 优酷APP响应式布局在消费场景的落地之Android篇
  13. c语言火车票管理系统360问答,C语言 车票管理系统 前面一点点的程序,不知道报错是什么意思,可以解释一下吗?代码的具体问题是什么...
  14. Linux for Matlab中文注释乱码(亲测有效)
  15. mysql的常用引擎
  16. 精心整理|Python爱好者社区历史文章合集(作者篇)--20190925从豆瓣获取
  17. Android 最最最简单的浏览器代码
  18. IOS 使用自签名证书开发HTTPS文件传输
  19. 上周内外盘行情回顾及交易情况2022.4.4
  20. android 左测设置功能,iqoo手机左边按键有什么作用?iqoo手机左侧按键介绍

热门文章

  1. 算法竞赛入门经典5.1 从c到c++
  2. Unity编辑器扩展之RequireComponent等详解
  3. 给你自己的博客加个 Markdown
  4. Linux基础命令---ckconfig
  5. 进程部分(IPC机制及生产者消费者模型)和线程部分
  6. HTML中       等6种空白空格的区别
  7. Google搜索解析
  8. Windows Phone 7 MVVM模式的学习笔记
  9. XML的四种解析器原理及性能比较
  10. deepin系统安装成功了之后重启电脑没有deepin启动选项的简单解决办法