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

  • 相关阅读:
    windows设置文件夹显示缩略图
    windows合并文件夹窗口
    crm高速开发之Entity
    在Eclipse中搭建Dagger和Dagger2使用环境
    CCEditBox/CCEditBoxImpl
    failed to sync branch You might need to open a shell and debug the state of this repo.
    五个方法:让站点用心服务于每一位客户
    Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
    ST Nucleo mbed套件开发 一 MBED环境使用 以Nucleo-F401为例 (二)
    关于Windows通过远程桌面訪问Ubuntu
  • 原文地址:https://www.cnblogs.com/jian1573/p/2002227.html
Copyright © 2020-2023  润新知