1.首先了解

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

表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针

2.函数原型

函数声明

void qsort(void *base, number, size, int (*cmp)(const void *p1, const void*p1))

参数

  • base-- 指向要排序的数组的第一个元素的指针。//一般填写数组名
  • number-- 由 base 指向的数组中元素的个数。
  • size-- 数组中每个元素的大小,以字节为单位。
  • cmp-- 用来比较两个元素的函数.
     int compar(const void *p1, const void *p2)
            {return *(int*)p2-*(int*)p2;}//这个是由小到大排序,return *(int *)p2 - *(int *)p1; 为由大到小排序。
       如果cmp返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左边;
  如果cmp返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;
  如果cmp返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的右边。
 
3.调用该函数需要声明  #include<stdlib.h>
4.对二维数组进行排序,本质是对每行的首地址元素进行排序

#include<stdio.h>
#include<stdlib.h>
int comp(const void*a,const void*b)
{
return ((int*)a)[]-((int*)b)[];
}
int main()
{
int i,j;
int a[][];
int n;
scanf("%d",&n);//假设n=3 for(i=;i<n;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);//假设输人4,2,1,3,5,6
//实际是对4,1,5进行排序
qsort(a,n,sizeof(int)*,comp);
for(i=;i<n;i++)
for(j=;j<;j++)
printf("%d \n",a[i][j]);//输出1,3,4,2,5,6
return ;
}

5.对结构体中的某个元素排序

#include<stdio.h>
#include<stdlib.h>
struct In
{
int data;
int other;
}s[];
int cmp( const void *a ,const void *b) {
// return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
//转自大佬..
//注意,这条语句在VC6.0环境下运行可能会出错,但是并不是语句错了,而是你要先 Build ,或者全部重建。总之语句是对的。
// 或者你可以将这上面1条语句改成下面这3条语句 struct In *aa = (In *)a;
struct In *bb = (In *)b;
return aa->data > bb->data ? : -;//data可以换成结构体中的其他项
} int main()
{
int n,i;
scanf("%d",&n);
for(i=;i<n;i++)
scanf("%d%d",&s[i].data,&s[i].other);
qsort(s,n,sizeof(s[]),cmp);
for(i=;i<n;i++)
printf("%d\n",s[i].data); return ;
}

c语言中的qsort用法的更多相关文章

  1. C语言中sizeof()的用法

    语法 sizeof有三种语法形式: 1.sizeof(object); //sizeof(对象); 2.sizeof(type_name); //sizeof(类型); 3.sizeof object ...

  2. C/C++语言中const的用法

    1. const 在C和C++中的区别     C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所 ...

  3. 在不同语言中static的用法

    static (计算机高级语言) 编辑 像在VB,C#,C,C++,Java,PHP中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN.ALGOL.COBOL.BA ...

  4. C语言中 malloc函数用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  5. 浅析C语言中assert的用法(转)

    原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<ass ...

  6. C语言中extern的用法--转

    http://blog.sina.com.cn/s/blog_52deb9d50100ml6y.html 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的, ...

  7. C语言中#define的用法(转)

    转自:http://www.dingge.com/main/article.asp?id=10 今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTI ...

  8. C语言中#define的用法

    今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i& ...

  9. C语言中 sscanf 的用法

    名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ...

随机推荐

  1. Go反射

    一.引入 不同语言的反射模型不尽相同,有些语言还不支持反射.<Go 语言圣经>中是这样定义反射的: Go 语言提供了一种机制在运行时更新变量和检查它们的值.调用它们的方法,但是在编译时并不 ...

  2. 【C语言】输入三个正整数a,b,c,求最大值,要求定义一个计算最大值的函数max(a,b),返回a,b的值

    #include<stdio.h> int max(int a, int b)/*定义函数*/ { if (a > b) return a; else return b; } int ...

  3. Oracle的表空间、用户和表的区别和联系

    Oracle的表空间.用户和表的区别和联系 Oracle数据库是通过表空间来存储实际存在的那些表.索引.视图的, 表空间分类: 临时表空间:   用于存储数据库中单持久性模型对象,如表.索引.视图等, ...

  4. jmeter+influxdb+granfana+collectd监控cpu+mem+TPS

    1.安装grafana #####gafana过期安装包安装报错 Error unpacking rpm package grafana-5.1.4-1.x86_64error: unpacking ...

  5. Unity2018破解版安装教程(windows)

    最近啊,在研究一些游戏的搭建与算法的创新,所以学习使用unity,下面来跟大家分享Unity2018的安装过程. 1.下载安装包(我的下载地址:链接:https://pan.baidu.com/s/1 ...

  6. maven 项目搭建

    转自:https://www.cnblogs.com/lzx2509254166/p/7674455.html Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软 ...

  7. 共有T个硬币,其中Z个正面,F个反面,分为两堆,要如何操作使得两堆中的正面硬币数目相等。

    类似题目如下(数值是可变化的) 你的面前有30个硬币,其中有10个正面朝上,20个反面朝上,混乱在一团. 要求:现在用厚布遮住你的眼睛.要你把30个硬币分成2团,每团正面朝上的硬币个数相等.问:你要怎 ...

  8. SOCV/POCV 开篇 (1)

    1.功能:模拟工艺偏差对芯片性能的影响 2. 40nm之前 flat derate模型可以基本覆盖大部分情况 3.AOCV (Adance OCV) 考虑distance 和depth的影响. AOC ...

  9. Spring一些注解

    spring @component的作用详细介绍 1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@ ...

  10. 算法刷题--回溯算法与N皇后

    所谓回溯算法,在笔者看来就是一种直接地思想----假设需要很多步操作才能求得最终的解,每一步操作又有很多种选择,那么我们就直接选择其中一种并依次深入下去.直到求得最终的结果,或是遇到明细的错误,回溯到 ...