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 ...
随机推荐
- Javascript基础系列之(七)函数(argument访问函数参数)
argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 <script type="text/javascript&q ...
- angular实例教程(用来熟悉指令和过滤器的编写)
angular的插件太少了, 所以很多指令和过滤器都要自己写, 所以对指令传进来的参数, 以及angular编译的流程更加熟悉才行写出好的插件, 有些简单的指令是参考angularUI里面, 作为 ...
- Java基础-重写-子类重写父类中的方法后执行情况
代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...
- Java原来如此-遍历Map的三种方法
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; pub ...
- 【Gym 100610A】Alien Communication Masterclass
题 Andrea is a famous science fiction writer, who runs masterclasses for her beloved readers. The mos ...
- yii2URL美化
yii2的url 域名/index.php?r=site%2Findex 实际为 域名/index.php?r=site/index 可以美化下 可以在main.php中配置 'components' ...
- Oracle导出导入数据库的方式
一.导入导出.dmp文件 利用cmd的操作命令导出,详情如下(备注:方法二是转载网上的教程):1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有 ...
- Syntax error, annotations are only available if source level is 1.5
在项目上右键 -> Properties -> Java Compiler
- 如何在 Ubuntu 14.04 里面配置 chroot 环境
你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 Linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 Linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我 ...
- Yii2 初体验
看着Yii1.1有那么多的不爽,又看着Yii2一天天成熟起来,于是凑一个小项目的原型阶段,试着用Yii2搞一搞. 随手写了一点体会,以一个Yii1的熟练工人看向Yii2的视角,简单一说吧.(将来随时可 ...