zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    压测 正则 性能分析
    时间复杂度 根号n
    务端如何防止重复支付 架构文摘 2021-05-02
    工具大于约定和文档
    千亿级公司低代码平台的测试体系介绍
    疑惑 题解
    计算几何相关总结
    树 题解
    矩阵加速相关总结
    loj6274 数字 题解
  • 原文地址:https://www.cnblogs.com/yixianyong/p/4571589.html
Copyright © 2011-2022 走看看