码迷,mamicode.com
首页 > 编程语言 > 详细

STL:快速排序模板qsort(转载)

时间:2015-09-26 17:06:58      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

                 qsort 

用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));   

各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针

     int fcmp ( const void *a , const void *b )

    { return *(int *)a - *(int *)b; }

    (注:当fcmp返回-1,则a会被排在b的前面,返回1,则b会被排在a的前面,返回0说明a==b)

例程:(仅显示返回值,且默认从小到大排序)

一、对int类型数组排序

  return *(int *)a - *(int *)b; 

二、对char类型数组排序

   return *(char *)a - *(int *)b

三、对double类型数组排序(严格上说double元素不可能相等)

   return *(double *)a > *(double *)b ? 1 : -1; 

四、对结构体一级排序

  令有结构体:struct In { double data; int other; }s[100]

  return (*(In *)a).data > (*(In *)b).data ? 1 : -1; 

五、对结构体二级排序

  令有结构体:struct In { int x; int y; }s[100];

  //按照x从小到大排序,当x相等时按照y从大到小排序

  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;

六、对字符串进行排序

  return strcmp( *(char *)a , *(char *)b);

 

  参考地址:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html

 

最近会多学一点模板和STL,我发现STL真是一个解放双手的东西,面向对象果然是一个好东西!

STL:快速排序模板qsort(转载)

标签:

原文地址:http://www.cnblogs.com/Philip-Tell-Truth/p/4840862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!