c语言中的qsort用法
1.首先了解
int cmp(const void* a, const void* b)
表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针
2.函数原型
函数声明
参数
- base-- 指向要排序的数组的第一个元素的指针。//一般填写数组名
- number-- 由 base 指向的数组中元素的个数。
- size-- 数组中每个元素的大小,以字节为单位。
- cmp-- 用来比较两个元素的函数.
return *(int*)p2-*(int*)p2;}//这个是由小到大排序,return *(int *)p2 - *(int *)p1; 为由大到小排序。如果cmp返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;
如果cmp返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的右边。
#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用法的更多相关文章
- C语言中sizeof()的用法
语法 sizeof有三种语法形式: 1.sizeof(object); //sizeof(对象); 2.sizeof(type_name); //sizeof(类型); 3.sizeof object ...
- C/C++语言中const的用法
1. const 在C和C++中的区别 C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所 ...
- 在不同语言中static的用法
static (计算机高级语言) 编辑 像在VB,C#,C,C++,Java,PHP中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN.ALGOL.COBOL.BA ...
- C语言中 malloc函数用法
一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...
- 浅析C语言中assert的用法(转)
原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<ass ...
- C语言中extern的用法--转
http://blog.sina.com.cn/s/blog_52deb9d50100ml6y.html 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的, ...
- C语言中#define的用法(转)
转自:http://www.dingge.com/main/article.asp?id=10 今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTI ...
- C语言中#define的用法
今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i& ...
- C语言中 sscanf 的用法
名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ...
随机推荐
- 第二十五篇 玩转数据结构——链表(Linked List)
1.. 链表的重要性 我们之前实现的动态数组.栈.队列,底层都是依托静态数组,靠resize来解决固定容量的问题,而"链表"则是一种真正的动态数据结构,不需要处理固定容 ...
- vue中的回到顶部
<template> <div class="main"> <div class="content">灰色部分是内容部分&l ...
- python字典里面列表排序
#coding=utf8 #获取到的数据库ip,和负载数据,需要按照负载情况排序 a={u'1.8.1.14': [379, 368, 361, 358, 1363], u'9.2.4.3': [42 ...
- 初探日志分析常用的linux命令
了解linux常用命令,有助于提升我们的生产力,提升工作效率,更快速地定位问题,当然也是为了更好地解决问题.这两天,趁着在家办公的时间,我把linux系统中常用的命令整理了一下,主要涉及到查找.查看, ...
- html input file 设置文件类型
解决方案: 使用 input 的 accept 属性指定接受文件类型 -----------更新--------------- 之前的代码有个缺点,打开文件窗口时会自动筛选文件夹下所有符合设定类型的文 ...
- 将项目打成war包并用tomcat部署的方法,步骤及注意点
部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...
- STA之AOCV
为什么要引入AOCV 为了精确性,为了剔除悲观度.用set_timing_derate来设置OCV,对于一个固定的corner,只能对data/clock, cell/net, late/early分 ...
- 读写json文件
def read_json(path): """return dict""" with open(path,'r+')as f: retur ...
- putty上传下载文件
一,需要pscp.exe,习惯上和Putty.exe文件放在一起. 首先需要保证在命令行下可以访问到pscp.exe.可以通过配置Windows的环境变量Path,或者直接通过命令行访问到pscp.e ...
- redis持久化2
编程迷思 博客园 首页 联系 订阅 管理 随笔 - 11 文章 - 0 评论 - 318 深入学习Redis(2):持久化 前言 在上一篇文章中,介绍了Redis的内存模型,从这篇文章开始,将依次 ...