C语言中qsort函数用法-示例分析
 
 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值。

分享给大家供大家参考。C语言中的qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序。


一、对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 - *(char *)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]; int cmp( const void *a ,const void *b)
{
return (*(struct In *)a)->data > (*(struct 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 = (struct In *)a;
struct In *d = (struct 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( (*(struct In *)a)->str , (*(struct In *)b)->str );
}
qsort(s,100,sizeof(s[0]),cmp);

相信本文所述实例对大家C程序设计的学习有一定的借鉴价值。

最新文章

  1. 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
  2. NGINX将PHP带参数的URL地址重定向二级或多级域名访问
  3. 68. 蓄水池抽样(Reservoir Sampling)
  4. adb server is out of date killing... 的解决办法
  5. HDU 3685 Rotational Painting(多边形质心+凸包)(2010 Asia Hangzhou Regional Contest)
  6. saltstack远程操作WINDOWS的POWERSHELL脚本
  7. Scrapy运行报错解决方案
  8. 注册界面的优化之ActionBar组件的应用之(一)ActionBar组件的布局实现
  9. [转]Mac常用软件推荐
  10. Masonry 添加约束要注意顺序
  11. C 返回函数与闭包的考虑
  12. [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch
  13. 关于系统首页绘制问题(ext布局+c#后台加入数据)经html输出流输出响应client
  14. go 内嵌对象类型
  15. hdu-3671-tarjin/割点方案
  16. MVC005之页面调用控制器中的方法
  17. BZOJ2730或洛谷3225 [HNOI2012]矿场搭建
  18. kbmmw 的HTTPSmartService入门
  19. php 删除二维数组中某个key值
  20. checkbox选择框如果被选中value值就可以传过去,没有被选中value就不能穿过去(调试了近一天,坑爹的说)

热门文章

  1. iPad开发--QQ空间布局,登录模块
  2. 唯一分解定理 poj 1365
  3. lucene-查询query-&gt;PhrasePrefixQuery使用短语缀搜索
  4. C#把datetime类型的日期转化成年月日或其他格式方法总结
  5. 【HDU 1542】Atlantis(线段树+离散化,矩形面积并)
  6. 使用oracle utl_http包需要注意的事项
  7. oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
  8. Java基础-关于session的详细解释
  9. MapReduce多重MR如何实现
  10. 【bzoj2705】 SDOI2012—Longge的问题