qsort用法总结
一、对int类型数组排序
int num[];
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
qsort(num,,sizeof(num[]),cmp);
二、对char类型数组排序(同int类型)
char word[]; int cmp( const void *a , const void *b )
{
return *(char *)a - *(int *)b;
} qsort(word,,sizeof(word[]),cmp);
三、对double类型数组排序
double in[];
int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? : -;
}
qsort(in,,sizeof(in[]),cmp);
四、对结构体一级排序
struct node
{
double data;
int other;
}s[]
//按照data的值从小到大将结构体排序
int cmp( const void *a ,const void *b)
{
return (*(node *)a).data > (*(node *)b).data ? : -;
}
qsort(s,,sizeof(s[]),cmp);
五、对结构体二级排序
struct node
{
int x;
int y;
}s[]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a , const void *b )
{
struct node *c = (node *)a;
struct node *d = (node *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}
qsort(s,,sizeof(s[]),cmp);
六、对字符串进行排序
#include<stdio.h>
#include<cstring>
#include<cstdlib>
char s[][];
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
int main()
{
int Q,i,n;
scanf("%d",&Q);
while(Q--)
{
memset(&s,,sizeof(s));
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%s",s[i]);
}
qsort(s,n,sizeof(s[]),cmp);
for(i=;i<n;i++)
{
printf("%s",s[i]);
}
printf("\n");
}
return ;
}
按照结构体中字符串str的字典顺序排序
struct Sample
{
int data;
char str[];
}s[]; //按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
return strcmp( (*(Sample *)a)->str , (*(Sample *)b)->str );
}
qsort(s,,sizeof(s[]),cmp);
附加一个完整点的代码,对字符串二维数组排序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s[][];
int cmp(const void *a, const void *b)
{
return strcmp((char *)a,(char *)b);
}
int main(){
int i,n;
scanf("%d",&n);
getchar();
for(i=;i<n;i++) gets(s[i]);
qsort(s,n,*sizeof(char),cmp);
for(i=;i<n;i++) puts(s[i]);
return ;
}
如果是一个结构体的话: struct node { int x,y; }
按x排序的话,就这样用: bool comp(const &a,const &b){return a.x
这里关键要理解 & 这个符号 举个简单点的例子来说:
int a=10; int &b=a;
这样b就和a完全一样啦
这个东东是相当好用的,比如我们想调用f(a,b,c)函数,并且希望对abc的值进行改变的话 。在c里面ms只可以用指针来实现。 但是用指针比较麻烦 有 & 这个符号就好用啦。
qsort用法总结的更多相关文章
- POJ 1065 Wooden Sticks#贪心+qsort用法
(- ̄▽ ̄)-* 这道题用到了cstdlib库的qsort()函数: 用法链接:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.h ...
- 1#Two Sum(qsort用法)
void*空类型指针,就好像暂时还没有确定类型,任何类型都可以赋给它.但是具体操作时一定要确定类型(如下,比较时先转Node) cmp返回一定是int,有-1,0,1三种,如果是1则第一个数要放在第二 ...
- C语言qsort用法
一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *( ...
- C语言 STL中qsort用法
qsort函数包含在<stdlib.h>的头文件里. qsort函数声明如下:void qsort(void *base, size_t nmemb, size_t size, int(* ...
- c语言中的qsort用法
1.首先了解 int cmp(const void* a, const void* b) 表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针 2.函数原型 函数声 ...
- sort与qsort的用法,建议使用sort
做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复 ...
- c++ qsort的使用
c++ qsort的使用 qsort函数定义在头文件algorithm中,使用时需要include该头文件 void qsort (void* base, size_t num, size_t siz ...
- C语言中qsort函数用法
C语言中qsort函数用法-示例分析 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...
- qsort函数用法【转】
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(con ...
随机推荐
- jQuery使用之(五)处理页面的事件
在之前dom操作中提到了javascript对事件处理的介绍.由于不同浏览器处理事件各不相相同,这给开发者带来了不必要的麻烦,jQuery的方便的解决了这个方面的麻烦. 1.绑定事件监听 (http: ...
- web.xml中配置固定数据
在web.xml单个servlet中配置的数据的存取 存: <servlet> <description>This is the description of my J2EE ...
- 在cmd中运行带包名的java程序
例: 在 d 盘中的 zh.java 文件,zh.java文件中有package com.fanShe.....; 则命令是 javac -d . zh.java 要在中间加入 -d . 后面运行的 ...
- Google-解决在调试页面或者js时总是提示烦恼的断点问题
按F12键,然后切换到Source标签,看底下的那个跟暂停一样的图标是不是变成蓝色或紫色了? 如果是蓝色或者紫色,则把他切换到“灰色”状态(点击图标就会切换成不同的状态.或者可能是其他颜色状态),如下 ...
- Java设计模式-访问者模式(Visitor)
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化.访问者模式适用于数据结构相对稳定算法又易变化的系统.因为访问者模式使得算法操作增加变得容易.若系统数据结构对象易于变化,经 ...
- 【POJ 1273】Drainage Ditches(网络流)
一直不明白为什么我的耗时几百毫秒,明明差不多的程序啊,我改来改去还是几百毫秒....一个小时后:明白了,原来把最大值0x3f(77)取0x3f3f3f3f就把时间缩短为16ms了.可是为什么原来那样没 ...
- 【CodeForces 625A】Guest From the Past
题 题意 一升奶可以花费a元,也可以话b元买然后获得c元,一开始有n元,求最多买多少升奶. 分析 贪心,如果b-c<a,且n≥b,那就买b元的,n先减去b再看看够买多少瓶,然后再+1瓶,余款再购 ...
- 【CodeForces 312B】BUPT 2015 newbie practice #3A Archer
题 SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to shoot in the targ ...
- 2014ACMICPC西安网赛1006
题意:给你一个骰子的初始状态和可以进行的四种操作,求从初始状态到目标状态的最少操作次数 题目本身很简单,bfs即可.但是因为骰子有六个面,搜索判重和记录状态比较麻烦.这时候就需要神器STL了. #in ...
- HD1532Drainage Ditches(最大流模板裸题 + 邻接表)
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...