zoukankan      html  css  js  c++  java
  • C语言函数qsort的使用方法

    qsort函数stdlib.h文件中,函数原型为

    void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));

    *base 为要排序的数组

    nelem 为要排序的数组的长度

    width 为数组元素的大小(一字节为单位)

    默认是从小到大排序的!

    (* Comp)(const void *p1,const void *p2) 为判断大小函数的指针,这个函数需要自己定义,如果p1>p2,函数返回-1;a<b,函数返回1;a==b函数返回0

    对int类型数组排序
    int num[100];

    int cmp ( const void *a , const void *b )
    {
    return *(int *)a - *(int *)b;
    }

    qsort(num,100,sizeof(num[0]),cmp);

    对double类型数组排序

    int Mycmp(const void *a ,const void * b)

    {

     return (*(double *)a>*(double * )b?1:-1);

    }

    struct ln{
    double data;
    int x;
    int y;
    };

    int Mycmp2(const void *a ,const void * b)
    {
    return (((ln *)a)->data>((ln *)b)->data?1:-1);
    }

    1. 对结构体二级排序

      struct ln{
      int x;
      int y;
      };

      对x按升序排列,如果x相同,则y按降序排列

      int Mycmp1(const void *a ,const void * b)
      {
      return (((ln *)a)->data>((ln *)b)->data?1:-1);
      } //升序

      int Mycmp2(const void *a ,const void * b)
      {
      if(((ln *)a)->data==((ln *)b)->data) 
       return (((ln *)a)->x>((ln *)b)->x?-1:1);
      }//降序

      int Mycmp2(const void *a ,const void * b)                                   //这个函数和上面两个函数之和的功能相同
      {
      if(((ln *)a)->data==((ln *)b)->data) 
       return (((ln *)a)->x>((ln *)b)->x?-1:1);
      else
       return (((ln *)a)->data>((ln *)b)->data?1:-1);

      }

    2.  

      对字符串进行排序

      int Mycmp3(const void *a ,const void * b)
      {
      return strcmp(((ln *)a)->str,((ln *)b)->str);
      }

    3.  

      对字符串二维数组排序完整代码

      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      char s[2001][1001];

      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=0;i<n;i++) gets(s[i]);
      qsort(s,n,1001*sizeof(char),cmp);
      for(i=0;i<n;i++) puts(s[i]);
      return 0;
      }


      END

    注意事项

    • qsort函数中的第四个参数为函数指针,函数名称即是函数指针,int  (* cmp)(const void * a,const void * b),其中指针a,b指向的是qsort中第三个参数指定的类型变量;

  • 相关阅读:
    python接口自动化(十一)--发送post【data】(详解)
    python接口自动化(十)--post请求四种传送正文方式(详解)
    selenium-java web自动化测试工具
    http接口测试工具——RESTClient
    python接口自动化(九)--python中字典和json的区别(详解)
    python接口自动化(八)--发送post请求的接口(详解)
    python接口自动化(七)--状态码详解对照表(详解)
    postgresql是如何处理死连接(转)
    利用pg_stat_activity进行问题排查
    (转)PostgreSQL 兼容Oracle
  • 原文地址:https://www.cnblogs.com/minmsy/p/5249549.html
Copyright © 2011-2022 走看看