一、对int类型数组排序

  1. int num[];
  2. int cmp ( const void *a , const void *b )
  3. {
  4. return *(int *)a - *(int *)b;
  5. }
  6. qsort(num,,sizeof(num[]),cmp);

二、对char类型数组排序(同int类型)

  1. char word[];
  2.  
  3. int cmp( const void *a , const void *b )
  4. {
  5. return *(char *)a - *(int *)b;
  6. }
  7.  
  8. qsort(word,,sizeof(word[]),cmp);

三、对double类型数组排序

  1. double in[];
  2. int cmp( const void *a , const void *b )
  3. {
  4. return *(double *)a > *(double *)b ? : -;
  5. }
  6. qsort(in,,sizeof(in[]),cmp);

四、对结构体一级排序

  1. struct node
  2. {
  3. double data;
  4. int other;
  5. }s[]
  6. //按照data的值从小到大将结构体排序
  7. int cmp( const void *a ,const void *b)
  8. {
  9. return (*(node *)a).data > (*(node *)b).data ? : -;
  10. }
  11. qsort(s,,sizeof(s[]),cmp);

五、对结构体二级排序

  1. struct node
  2. {
  3. int x;
  4. int y;
  5. }s[];
  6.  
  7. //按照x从小到大排序,当x相等时按照y从大到小排序
  8.  
  9. int cmp( const void *a , const void *b )
  10. {
  11. struct node *c = (node *)a;
  12. struct node *d = (node *)b;
  13. if(c->x != d->x) return c->x - d->x;
  14. else return d->y - c->y;
  15. }
  16. qsort(s,,sizeof(s[]),cmp);

六、对字符串进行排序

  1. #include<stdio.h>
  2. #include<cstring>
  3. #include<cstdlib>
  4. char s[][];
  5. int cmp(const void *a,const void *b)
  6. {
  7. return strcmp((char *)a,(char *)b);
  8. }
  9. int main()
  10. {
  11. int Q,i,n;
  12. scanf("%d",&Q);
  13. while(Q--)
  14. {
  15. memset(&s,,sizeof(s));
  16. scanf("%d",&n);
  17. for(i=;i<n;i++)
  18. {
  19. scanf("%s",s[i]);
  20. }
  21. qsort(s,n,sizeof(s[]),cmp);
  22. for(i=;i<n;i++)
  23. {
  24. printf("%s",s[i]);
  25. }
  26. printf("\n");
  27. }
  28. return ;
  29. }

按照结构体中字符串str的字典顺序排序

  1. struct Sample
  2. {
  3. int data;
  4. char str[];
  5. }s[];
  6.  
  7. //按照结构体中字符串str的字典顺序排序
  8. int cmp ( const void *a , const void *b )
  9. {
  10. return strcmp( (*(Sample *)a)->str , (*(Sample *)b)->str );
  11. }
  12. qsort(s,,sizeof(s[]),cmp);

附加一个完整点的代码,对字符串二维数组排序:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. char s[][];
  5. int cmp(const void *a, const void *b)
  6. {
  7. return strcmp((char *)a,(char *)b);
  8. }
  9. int main(){
  10. int i,n;
  11. scanf("%d",&n);
  12. getchar();
  13. for(i=;i<n;i++) gets(s[i]);
  14. qsort(s,n,*sizeof(char),cmp);
  15. for(i=;i<n;i++) puts(s[i]);
  16. return ;
  17. }

如果是一个结构体的话: 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用法总结的更多相关文章

  1. POJ 1065 Wooden Sticks#贪心+qsort用法

    (- ̄▽ ̄)-* 这道题用到了cstdlib库的qsort()函数: 用法链接:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.h ...

  2. 1#Two Sum(qsort用法)

    void*空类型指针,就好像暂时还没有确定类型,任何类型都可以赋给它.但是具体操作时一定要确定类型(如下,比较时先转Node) cmp返回一定是int,有-1,0,1三种,如果是1则第一个数要放在第二 ...

  3. C语言qsort用法

    一.对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *( ...

  4. C语言 STL中qsort用法

    qsort函数包含在<stdlib.h>的头文件里. qsort函数声明如下:void qsort(void *base, size_t nmemb, size_t size, int(* ...

  5. c语言中的qsort用法

    1.首先了解 int cmp(const void* a, const void* b) 表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针 2.函数原型 函数声 ...

  6. sort与qsort的用法,建议使用sort

    做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复 ...

  7. c++ qsort的使用

    c++ qsort的使用 qsort函数定义在头文件algorithm中,使用时需要include该头文件 void qsort (void* base, size_t num, size_t siz ...

  8. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  9. qsort函数用法【转】

    qsort函数用法 qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(con ...

随机推荐

  1. Javascript基础系列之(七)函数(argument访问函数参数)

    argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 <script type="text/javascript&q ...

  2. angular实例教程(用来熟悉指令和过滤器的编写)

    angular的插件太少了,  所以很多指令和过滤器都要自己写,  所以对指令传进来的参数, 以及angular编译的流程更加熟悉才行写出好的插件, 有些简单的指令是参考angularUI里面, 作为 ...

  3. Java基础-重写-子类重写父类中的方法后执行情况

    代码 public class Test { public static void main(String[] args) { Shape shape = new Circle(); System.o ...

  4. Java原来如此-遍历Map的三种方法

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; pub ...

  5. 【Gym 100610A】Alien Communication Masterclass

    题 Andrea is a famous science fiction writer, who runs masterclasses for her beloved readers. The mos ...

  6. yii2URL美化

    yii2的url 域名/index.php?r=site%2Findex 实际为 域名/index.php?r=site/index 可以美化下 可以在main.php中配置 'components' ...

  7. Oracle导出导入数据库的方式

    一.导入导出.dmp文件 利用cmd的操作命令导出,详情如下(备注:方法二是转载网上的教程):1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有 ...

  8. Syntax error, annotations are only available if source level is 1.5

    在项目上右键 -> Properties -> Java Compiler

  9. 如何在 Ubuntu 14.04 里面配置 chroot 环境

    你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 Linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 Linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我 ...

  10. Yii2 初体验

    看着Yii1.1有那么多的不爽,又看着Yii2一天天成熟起来,于是凑一个小项目的原型阶段,试着用Yii2搞一搞. 随手写了一点体会,以一个Yii1的熟练工人看向Yii2的视角,简单一说吧.(将来随时可 ...