zoukankan      html  css  js  c++  java
  • qsort用法 (转)

                快速排序qsort真的很强大

    一、对int类型数组排序

          int num[100];

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

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

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

          char word[100];

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

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

    三、对double类型数组排序

          double in[100];

          int cmp( const void *a , const void *b )
          {
                return *(double *)a > *(double *)b ? 1 : -1;
          }

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

    四、对结构体一级排序

          struct Sample
          {
                double data;
                int other;
          }s[100]

          //按照data的值从小到大将结构体排序

          int cmp( const void *a ,const void *b)
          {
                return (*(Sample *)a).data < (*(Sample *)b).data ? -1 : 1;
          }

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

    五、对结构体二级排序

          struct Sample
          {
                int x;
                int y;
          }s[100];

    //按照x从小到大排序,当x相等时按照y从大到小排序

          int cmp( const void *a , const void *b )
          {
                struct Sample *c = (Sample *)a;
                struct Sample *d = (Sample *)b;
                if(c->x != d->x) return c->x - d->x;
                else return d->y - c->y;
          }

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

    六、对字符串进行排序

          struct Sample
          {
                int data;
                char str[100];
          }s[100];

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

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

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

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

    #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;
    }

  • 相关阅读:
    JVM
    关于filter
    session
    xml
    互联网应用和企业级项目的区别
    本学期javaee目标
    团队项目软件度量
    团队项目总结
    团队项目来换网最新
    ubuntu18.04 编译opencv4.4.0 带cuda加速,ffmpeg
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2153699.html
Copyright © 2011-2022 走看看