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实现异步上传图片
利用jQuery的ajax函数就可以实现异步上传图片了.一开始我是想在处理程序中,直接用context.Request.Files来获取页面中的input file,但是不知道为什么一次获取不了.网上 ...
- Graphics samples
绘制二次曲线: public void paint(Graphics g) { // TODO 自动生成的方法存根 super.paint(g); Graphics2D g2=(Graphics2D) ...
- 每天一个linux命令(46):ping命令
Linux系统的ping 命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地 址192.168.1.1试试 ...
- card-test
<!DOCTYPE html><html> <head> <title>test</title> <style type=" ...
- git的牛逼
http://rogerdudler.github.io/git-guide/index.zh.html
- Kettle_设置变量的两种方法
一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值. 主作业添加的[设置变量]针对的是所 ...
- Java基础-继承-子类与父类执行顺序
代码 public class Test { public static void main(String[] args) { new Circle(); } } class Draw { publi ...
- Fedora21下安装cuda7.5
Fedora21装cuda7.5 首先制作启动U盘.装好fedora21后别做任何update等yum和rpm操作,按照下面步骤走. 其中遇到用UEFI模式安装cuda时,系统一定要求提供公钥和私钥, ...
- 【poj1007】 DNA Sorting
http://poj.org/problem?id=1007 (题目链接) 题意 给出m个字符串,将其按照逆序对个数递增输出. Solution 树状数组经典应用. 代码 // poj1007 #in ...
- BZOJ1452 [JSOI2009]Count
Description Input Output Sample Input Sample Output 1 2 HINT 正解:二维树状数组 解题报告: 这是一道送肉题.二维树状数组直接维护每种颜色的 ...