博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 qsort
阅读量:6105 次
发布时间:2019-06-21

本文共 1068 字,大约阅读时间需要 3 分钟。

C 自带了一个排序函数qsort, 使用时要定义一个compare方法。

下面是一个例子:

/* qsort example */#include 
/* printf */#include
/* qsort */int values[] = { 40, 10, 100, 90, 20, 25 };int compare (const void * a, const void * b){ return ( *(int*)a - *(int*)b );}int main (){ int n; qsort (values, 6, sizeof(int), compare); for (n=0; n<6; n++) printf ("%d ",values[n]); return 0;} 假设有一个复杂类型的数组,要按照其中的某个属性来排序时又该怎么做呢?
#include 
#include
typedef struct _block{ int att1; int att2; }Block;int compare(const void *a, const void *b){ int aa = ((Block *)a)->att1; int bb = ((Block *) b)->att1; if (aa > bb) return 1; else if (aa < bb) return -1; else return 0; }int main(){ int n; Block b[3]; b[0].att1= 3; b[0].att2=3; b[1].att1 =8; b[1].att2=8; b[2].att1 = 5; b[2].att2=5; qsort(b, 3, sizeof(Block), compare); for (n=0; n<3; n++){ printf("%d %d\n", b[n].att1, b[n].att2); } return 0;}
要想按照降序排列,只需要修改compare函数的返回值就行了。
 

 

转载于:https://www.cnblogs.com/denflyson/archive/2013/06/05/3119353.html

你可能感兴趣的文章
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
如何向 Linux 内核上游提交 Patch ?
查看>>
Go编程笔记(7)
查看>>
Go语言int类型绑定方法
查看>>
pid控制的文章
查看>>
MySQL中EXPLAIN命令详解
查看>>
redis 单点部署
查看>>
Java中需要编码的场景
查看>>
PHP生成word的三种方式
查看>>
设计模式(九)——桥接模式
查看>>