qsort的第四个参数,辅助函数compare的关于不同排序对象的不同写法:

一、对int类型数组排序

int num[];
int compare(const void *a, const void *b)
{
  return *(int *)a - *(int *)b;
}

二、对char类型数组排序(同int类型)

char word[];
int compare(const void *a, const void *b)
{
  return *(char *)a - *(char *)b;
}

三、对double类型数组排序

double array[];
int compare(const void *a, const void *b)
{
  return *(double *)a > *(double *)b ? : -;
}

注意qsort第三个参数是sizeof(array[0])。

四、对结构体一级排序

typedef struct node
{
double data;
int other;
}Node;
array[]; int compare(const void *a, const void *b)
{
return ((Node *)a)->data > ((Node *)b)->data ? : -;
}

五、对结构体二级排序

typedef struct node
{
int x;
int y;
}Node;
Node array[];
//按照x从小到大排序,当x相等时按照y从大到小排序
int compare(const void *a, const void *b)
{
Node *p1 = (Node *)a;
Node *p2 = (Node *)b;
if (p1->x != p2->x)
return p1->x - p2->x;
else
return p1->y - p2->y;
}

六、对字符串进行排序

typedef struct node
{
int other;
char string[];
}Node;
Node array[];
//按照结构体中字符串string的字典顺序排序
int compare(const void * a, const void * b)
{
return strcmp(((Node *)a)->string, ((Node *)b)->string);

qsort函数辅助函数compare函数的编写的更多相关文章

  1. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...

  2. 学习hash_map从而了解如何写stl里面的hash函数和equal或者compare函数

    ---恢复内容开始--- 看到同事用unordered_map了所以找个帖子学习学习 http://blog.sina.com.cn/s/blog_4c98b9600100audq.html (一)为 ...

  3. hadoop中compare函数

    在看hadoop  的二次排序的时候,改写了下, 加了第三个参数,  本来以为是在 public int compareTo(IntPair o) { System.out.println(" ...

  4. 【C++函数题目】重载完成Compare函数

    题目来源链接:https://www.dotcpp.com/oj/problem2008.html 题目讲解链接:http://6o2.cn/1yjJB2  题目描述 利用函数重载完成三个比较大小的C ...

  5. Generator函数执行器-co函数库源码解析

    一.co函数是什么 co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行.短小精悍只有短短200余行,就可以免去手动编写G ...

  6. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  7. 自写函数VB6 STUFF函数 和 VB.net 2010 STUFF函数 详解

    '*************************************************************************'**模 块 名:自写函数VB6 STUFF函数 和 ...

  8. PHP函数之自定义函数

    像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 自定义函数 函数的 ...

  9. PHP中的回调函数和匿名函数

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

随机推荐

  1. 【转】http://www.cnblogs.com/yuzukwok/p/3884377.html

    来自:http://www.cnblogs.com/yuzukwok/p/3884377.html An Introduction to Xamarin.Forms 来源:http://develop ...

  2. 总结:liunx常见命令集合

    没有系统学习过liunx,把工作中遇到的liunx命令集合信息如下: 1.nc传送文件 之前总是用rsync, 今天遇到了一个从阿里云服务器传送文件到我们公司的内网服务器,这就不能传了,又想用一致的文 ...

  3. Excel 复制Sql查询结果错位

    SELECT TOP 30000 REPLACE(REPLACE(T1.ReceiverName,CHAR(10),' '),CHAR(13),' ') AS ReceiverName, REPLAC ...

  4. AppDelegate 里一个基本的跳转方法,用来在rootView崩溃的时候直接调试我自己的页面

    将 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)lau ...

  5. iOS 如何随意的穿插跳跃,push来pop去

    OS 如何随意的穿插跳跃,push来pop去 主题思想:如A.B.C.D 四个视图控制器 想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A ...

  6. 关于angularjs依赖注入的整理

    初学angularjs阶段,刚刚看到菜鸟教程的angularjs依赖注入.现在整理一下: 1.含义:一个或更多的依赖(可以理解为模块关系依赖)或服务(分为内建服务[例如$http,$tiomeout等 ...

  7. my_query()的引号注意

    $sql="insert into lianxi values(null,'$usename','$email',$sex,$age,'$chusheng','$guanji')" ...

  8. ACM常用模板

    数论: 中国剩余定理(互质与非互质通用版) ],r[]; int e_gcd(int a,int b,int &x,int &y) { ) { x=; y=; return a; } ...

  9. npm 使用代理

    npm install 有时候会安装失败,可能是网络的问题,可以使用代理来安装 npm获取配置有6种方式,优先级由高到底. 命令行参数. --proxy http://server:port即将pro ...

  10. 湖南多校对抗赛(2015.05.03)Problem B: War

    并查集.从后往前加边. #include<stdio.h> #include<string.h> #include<math.h> #include<algo ...