zoukankan      html  css  js  c++  java
  • C语言中 stdlib.h中的qsort排序用法

      今天在刷leetcode的时候,发现快排居然C语言也有写好的库函数直接调用。真神奇。

      一共有其中排序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[50];

    Sample:

    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 In

    {

    double data;

    int other;

    }s[100]

    //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写

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

    {

    return (*(In *)a).data > (*(In *)b).data ? 1 : -1;

    }

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

    五、对结构体二级排序

    struct In

    {

    int x;

    int y;

    }s[100];

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

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

    {

    struct In *c = (In *)a;

    struct In *d = (In *)b;

    if(c->x != d->x) return c->x - d->x;

    else return d->y - c->y;

    }

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

    六、对结构体三级排序(都是从小到大)

    #include<stdlib.h>

    typedef struct  item

    {

        int num,length,width;

    };

    int comp(const void *p1,const void *p2)

    {

        struct item *c=(item*)p1;

        struct item *d=(item*)p2;

        if(c->num!=d->num)

        {

            return d->num<c->num?1:-1;

        }

        else if(c->length!=d->length&&c->num==d->num)

        return d->length<c->length?1:-1;

        else return d->width<c->width?1:-1;

    }

    item ss[1200];

    qsort(ss,n,sizeof(ss[0]),comp);

    七、对字符串进行排序

    struct In

    {

    int data;

    char str[100];

    }s[100];

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

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

    {

    return strcmp( (*(In *)a)->str , (*(In *)b)->str );

    }

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

  • 相关阅读:
    我的程序优化尽量减少数据库连接操作
    dreamhappy博客索引
    一步一步实现网站的多语言版本
    spring入门基础
    discuz模版的学习
    第七次jsp作业
    第五次作业
    jsp第二次作业
    第六次作业
    jsp第六周作业
  • 原文地址:https://www.cnblogs.com/Alei777/p/13223633.html
Copyright © 2011-2022 走看看